1. 接受服务器返回的数据并提取使用

JSON版本(返回JSON)

示例

要从后台取得Genus的相关选项,首先,我们要知道如何对json的数据进行处理:因为json返回的是object,所以经过js里的json解析包就可以把它解析出来,

<script>
var t=new XMLHttpRequest;
    t.onreadystatechange=
    function(){4==this.readyState&&200==this.status&&(
        json_options[0] = JSON.parse(this.responseText),
        extract_info(json_options[0],0),
        test_loading[0] = true,)},
        t.open("GET",urls[0],!0),
        t.withCredentials=!0,
        t.send()
</script>

接着,就可以对这个数据进行提取并放进Genus的下拉菜单里:

function extract_info(object,i){
    for(x in object.results.bindings)
    {
      document.getElementById("Genus").options.add(new Option(object.results.bindings[x].genus.value,object.results.bindings[x].genus.value));
    }
}

当然,在提取的时候,要先看一看这json类型的数据的结构,才能写出相关的提取语句。

CSV版本(返回CSV)

function searchfunction(){
var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 & this.status == 200) 
    {     
        var csv = this.responseText; 
        csvTotable(csv);
    }
};
xmlhttp.open("GET", url, true);
xmlhttp.send();

在《Pragmatic Ajax A Web 2.0 Primer 》中对readyState状态的介绍,摘译如下:
0: (Uninitialized) the send( ) method has not yet been invoked.
1: (Loading) the send( ) method has been invoked, request in progress.
2: (Loaded) the send( ) method has completed, entire response received.
3: (Interactive) the response is being parsed.
4: (Completed) the response has been parsed, is ready for harvesting.

HTTP状态码详解
200: 请求已成功,请求所希望的响应头或数据体将随此响应返回。

404: 请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用410状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。

500: 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。

CSV, JSON, XML 对比

对于返回值csv
返回的值是csv file, 但是type却是 string。所以我们就可以把它当做string来处理。CSV没有固定的标准,只要在前后端达成了协议,都可以作为标准来实施。
通用:以空格(/n)表示换行,以,表示分隔。

所以,对返回的string进行切割就可以实现数据的分析和处理。

// tramsform the csv into the table
function csvTotable(arr) {
  document.getElementById("dvCsv").innerHTML="";
  var dvCSV = document.getElementById("dvCsv");
  var table = document.createElement("table");
  var rows = arr.split("\n");
  var header = rows[0].split(",");
  var tr = document.createElement("tr");
  for (var q = 0;q < header.length;q++){
    var th = document.createElement('th');
    th.innerHTML = header[q];
    tr.appendChild(th);
  }
  table.appendChild(tr);
  for (var i = 1; i < rows.length-1; i++) {
      var row = table.insertRow(-1);

//对数据进行切割分析
      var cells = rows[i].split(",");
      for (var j = 0; j < cells.length; j++) {
         var cell = row.insertCell(-1);
         cell.innerHTML = cells[j];
         cell.setAttribute('contentEditable', 'true');
      }
  }

  dvCSV.append(table);
}
}

XML httpRequest

本文中,均使用了异步请求,即发送了数据请求后,在运行其他进程的同时等待返回函数,一旦返回,就开始执行相关的线程。这样如果这个数据请求出现了问题,那么网页的其他功能都照常。
具体info关于异步和同步请求,请看这里

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 & this.status == 200) 
    {     
        var csv = this.responseText; 
        csvTotable(csv);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351