Javascript 成功填充xmlhttprequest的Json对象突然变为;空";
“json_options”是一个全局变量,应该用XMLHttpRequest的responseText填充,它包含一个有效的json字符串:Javascript 成功填充xmlhttprequest的Json对象突然变为;空";,javascript,json,xmlhttprequest,Javascript,Json,Xmlhttprequest,“json_options”是一个全局变量,应该用XMLHttpRequest的responseText填充,它包含一个有效的json字符串: function getOptionsData() { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
function getOptionsData()
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
json_options = JSON.parse(xmlhttp.responseText);
}
}
xmlhttp.open("GET", "getData.php", true);
xmlhttp.send();
}
此时一切正常,json_选项包含一个有效的json对象
在函数“createOptionsTable”中调用函数“getOptionsData”:
函数createOptionsTable()
{
getOptionsData();
var元素=null;
对于(var i=0;i
当我想在此时访问“json_选项”时,它说它是空的,我不知道为什么
非常感谢您的帮助,提前感谢!函数getOptionsData()
function createOptionsTable()
{
getOptionsData();
var element = null;
for(var i = 0; i < json_options.length; i++)
{
[...]
{
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
json_options=json.parse(xmlhttp.responseText);
对于(var i=0;i
您的
for循环应该在您可以实际从ajax获得响应之后执行,而不是在createOptionsTable()
中执行。在您的代码中,getOptionsData();
之后的代码在调用成功回调之前执行。因此,您将json\u options
设置为null
像这样试试
function getOptionsData()
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
json_options = JSON.parse(xmlhttp.responseText);
for(var i = 0; i < json_options.length; i++)
{
[...]
}
}
}
xmlhttp.open("GET", "getData.php", true);
xmlhttp.send();
}
函数getOptionsData(回调)
{
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
json_options=json.parse(xmlhttp.responseText);
回调();
}
}
open(“GET”,“getData.php”,true);
xmlhttp.send();
}
函数createOptionsTable()
{
var callback=function()
{
var元素=null;
对于(var i=0;i
太好了!正是我要找的!谢谢!
function getOptionsData()
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
json_options = JSON.parse(xmlhttp.responseText);
for(var i = 0; i < json_options.length; i++)
{
[...]
}
}
}
xmlhttp.open("GET", "getData.php", true);
xmlhttp.send();
}
function getOptionsData(callback)
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
json_options = JSON.parse(xmlhttp.responseText);
callback();
}
}
xmlhttp.open("GET", "getData.php", true);
xmlhttp.send();
}
function createOptionsTable()
{
var callback = function()
{
var element = null;
for(var i = 0; i < json_options.length; i++)
{
[...]
}
}
getOptionsData(callback);
}