如果您通過單擊下面的鏈接查看我目前的內容,則會看到我遇到的問題。全局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