使用JSON值填充选择

时间:2014-09-26 11:50:14

标签: javascript json function

我有一个从某个网站获取json文本的函数:

window.onload = function httpGet()
{
    var xmlHttp = null;
    var box = document.getElementById("http") //just for testing
    xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", "http://link_to_Json_Text", false );
    xmlHttp.send( null );
    box.value += xmlHttp.responseText; //just for testing
    return xmlHttp.responseText.toJSON();

}

这将结果显示为:

    {
  "head": {
    "vars": [ "uri" , "label" ]
  } ,
  "results": {
    "bindings": [
      {
        "uri": { "type": "uri" , "value": "http://tematres.befdata.biow.uni-leipzig.de/vocab/?tema=751" } ,
        "label": { "type": "literal" , "xml:lang": "en" , "value": "15n" }
      } ,
      {

然后我执行此函数以将JSON的值检索为对象:

var results = httpGet().results.bindings.map(function(el){
    return { uri: el.uri.value, label: el.label.value };
});

然后我想在HTML选择菜单中获取第二个函数的值。

我不确定,如果第二种方法正确调用第一种方法,因为控制台会出现如下错误:Uncaught ReferenceError: httpGet is not defined

我需要使用value中的label来填充选择菜单。

1 个答案:

答案 0 :(得分:0)

只需为请求链接成功事件:

window.onload = function() //No function name needed
{
    var xmlHttp = null;
    var box = document.getElementById("http") //just for testing
    xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", "http://link_to_Json_Text", false );
    xmlHttp.send( null );
    xmlHttp.onreadystatechange=function()
    {
       if (xmlHttp.readyState==4 && xmlHttp.status==200)
       {
          var results =xmlHttp.responseText.toJSON();
          results.bindings.map(function(el){
              return { uri: el.uri.value, label: el.label.value };
          });
       }
    };
}

这只是发出httpGet请求并等待请求结束(readyState == 4)以触发结果过程的功能。

无论如何我想建议你,如果可以,使用jQuery,因为使用Ajax比使用本机JS更简单