我有一个从某个网站获取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
来填充选择菜单。
答案 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更简单