看板 Ajax 關於我們 聯絡資訊
我大概看懂回文的意思 那我要確保token的事情都做完了才能取他的值 所以我在sendtokenRequest();之後也加 if (xmlHttp.readyState==4 || xmlHttp.readyState=='complete'){ if (xmlHttp.status == 200) 是這個意思嗎? 因為我其實要做兩次xmlHttprequest 第一次做完的edittoken要丟給第二次做 ※ 引述《tn801534 (踢恩)》之銘言: : 為什麼我的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: 218.211.217.211
tn801534:還是說有什麼辦法可以確定第一次的request結束了? 07/02 23:10
zhadow:從你的程式來看,d和c一樣,放在catchtokenResult中就可以了 07/02 23:35
zhadow:在 sendtokenRequest() 用 if..檢查 readystate 不是好做法 07/02 23:36
tn801534:我的意思是說sendrequest中做完sendtokenrequest之後檢查 07/02 23:38
tn801534:還是說我第二次request直接在給完edittoken後做? 07/02 23:40
zhadow:sendtokenrequest 之後檢查的話,得用迴圈檢查,不好. 07/02 23:48
zhadow:為什麼不放在catchtokenResult中? 07/02 23:48
zhadow:至於你說的第2次request,沒看到實際程式,不知道有什麼影響 07/02 23:50
tn801534:所以是在catchtokenresult給完edittoken後直接做第二次囉 07/02 23:50
tn801534:是這個意思嗎? 07/02 23:50
tn801534:因為我第二次request的url裡面要有edittoken所以要等 07/02 23:51
tn801534:第一次做完 07/02 23:51
zhadow:嗯,你試看看,不過要做檢查,免得catchtokenresult 07/02 23:57
zhadow:一直 request 07/02 23:58