[問題] 關於變數

看板Ajax作者 (踢恩)時間16年前 (2008/07/02 17:40), 編輯推噓2(204)
留言6則, 4人參與, 最新討論串1/2 (看更多)
為什麼我的edittoken在c裡面顯示是對的 可是在d裡面顯示undefined 我不是宣告全域了嗎? 我測試發現catchtokenResult的給值動作好像讓edittoken變成local的給值 請問要怎麼改呢 以下附上程式碼 有點繁雜抱歉 var edittoken; function sendtokenRequest(){ url='wiki/api.php?action=query&prop=info&intoken=edit&titles=' + getTitl +'&format=xml'; createXHR(); xmlHttp.onreadystatechange=catchtokenResult; xmlHttp.open('GET',url,true); xmlHttp.send(null); } function catchtokenResult(){ var obj=document.getElementById('c'); if (xmlHttp.readyState==4 || xmlHttp.readyState=='complete'){ if (xmlHttp.status == 200) { s=xmlHttp.responseXML; edittoken=s.getElementsByTagName('page') [0].getAttribute('edittoken'); obj.innerHTML=edittoken; } else { obj.innerHTML=xmlHttp.status; } } } function sendRequest(){ var obj=document.getElementById('d'); sendtokenRequest(); obj.innerHTML=edittoken; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.4.47 ※ 編輯: tn801534 來自: 140.117.4.47 (07/02 18:01) ※ 編輯: tn801534 來自: 140.117.4.47 (07/02 18:04)

07/02 18:09, , 1F
剛自己測了一下好像第一次會是undefined 第二次就有了
07/02 18:09, 1F

07/02 18:09, , 2F
感覺好奇怪...= =
07/02 18:09, 2F

07/02 18:20, , 3F
sendRequest第三行做的事情移到catchtokenResult來做吧。
07/02 18:20, 3F

07/02 18:31, , 4F
catchtokenResult 中跑到 else 中就是 undefined 了.
07/02 18:31, 4F

07/02 18:33, , 5F
在設定innerHTML=edittoken前應確定 readystate是你要的
07/02 18:33, 5F

07/03 23:04, , 6F
很正常啊,因為跑到sendRequest第三行時,XHR不一定已經呼叫
07/03 23:04, 6F
文章代碼(AID): #18Qqq6aG (Ajax)
討論串 (同標題文章)
文章代碼(AID): #18Qqq6aG (Ajax)