JavaScript中JSON的问题
我有点奇怪,找不出是什么引起的。 我定义了一个全局数组变量,JavaScript中JSON的问题,javascript,ajax,json,Javascript,Ajax,Json,我有点奇怪,找不出是什么引起的。 我定义了一个全局数组变量,tmpMs。我使用AJAX和JSON.parse来填充它,这很有效: function LoadMobs(dung){ var xhr; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhr = new ActiveXObject("Msxml
tmpMs
。我使用AJAX和JSON.parse
来填充它,这很有效:
function LoadMobs(dung){
var xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} else {
throw new Error("Ajax is not supported by this browser");
}
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status == 200 && xhr.status < 300) {
// get mobs from PHP
setTempMobs(JSON.parse(xhr.responseText));
alert(tmpMs[0].NAME);
}
}
}
xhr.open('POST', 'loadmobs.php');
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("dung=" + dung);
}
AJAX中的警报功能可以工作并显示mob的名称。不足为奇
但是,如果我想访问LoadMobs函数后面的“tmpMs”变量,它会说“无法访问未定义的属性0”
任何想法都将不胜感激。也许我应该提到,所有这些都是在某个画布重画间隔内发生的。任何使用回调结果的东西都必须在该回调内。之后就不会了。在…内另外,当你仔细检查
ActiveXObject
的使用情况,然后盲目使用JSON.parse
而不检查是否支持时,我是唯一质疑你基本技能的人吗?LoadMobs
是异步的,不会阻塞。调用它,启动AJAX请求,然后发出警报(tmpMs[0].NAME)代码>在AJAX请求实际完成之前执行。@jiribrek-前半部分。。。说得好,不幸的是,你后来堕落到了尼特的水平之下
function setTempMobs(mss){
tmpMs = mss;
}
LoadMobs(currDungBgIndex);
alert(tmpMs[0].NAME);