如果您通过单击下面的链接查看我目前的内容,则会看到我遇到的问题。全局JSON变量
- 我从Ricky.json中获取包含游戏数据的JSON数据。
- 然后,我尝试使用一段JSON数据在文本字段中设置皮卡丘的名称,但实际上它是
undefined
。
我在Chrome上的控制台说对象“皮卡丘”存在,因为当我在控制台中提醒它时,它会返回“对象对象”。我也可以使用JSON.stringify()通过控制台对其进行字符串化。
为什么它不是全球性的功能main()
本身,但在其他地方它是?
function ChangeName(){
var n=prompt("What would you like to rename your Pikachu?",""+pikachu.pikaname+"");
pikachu.pikaname=n;
}
function main(){
try{
ajaxObj=new XMLHttpRequest();
pikaname=document.getElementById("pikaname");
age=document.getElementById("age");pikachu="";
ajaxObj.onreadystatechange=function(){
if(ajaxObj.readyState>=4&&ajaxObj.status==200){
pikachu=JSON.parse(ajaxObj.responseText);
}
}
ajaxObj.open("GET","players/Ricky.json",true);
ajaxObj.send();
pikaname.value=pikachu.pikaname;
}
catch(e){
alert(e);
}
}
为什么不分配onreadystatechange函数中的值?我认为问题是这个ajax是asynchroneus,你试图在ajax返回json对象之前设置该值。 – 2012-07-29 00:15:45
我是,这只是......在我看来,这是有点sl。。 我真的只是将所有的东西都分成了几个函数,比如“SaveGame()”,“LoadGame()”,“ChangeName()”等。 有没有什么办法可以做到这一点? – 2012-07-29 00:17:14