作者tn801534 (踢恩)
看板Ajax
標題[問題] 關於變數
時間Wed Jul 2 17:40:18 2008
為什麼我的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)
1F:→ tn801534:剛自己測了一下好像第一次會是undefined 第二次就有了 07/02 18:09
2F:→ tn801534:感覺好奇怪...= = 07/02 18:09
3F:推 fillano:sendRequest第三行做的事情移到catchtokenResult來做吧。 07/02 18:20
4F:→ zhadow:catchtokenResult 中跑到 else 中就是 undefined 了. 07/02 18:31
5F:→ zhadow:在設定innerHTML=edittoken前應確定 readystate是你要的 07/02 18:33
6F:推 todau:很正常啊,因為跑到sendRequest第三行時,XHR不一定已經呼叫 07/03 23:04