作者tn801534 (踢恩)
看板Ajax
標題Re: [問題] 關於變數
時間Wed Jul 2 22:57:41 2008
我大概看懂回文的意思
那我要確保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
1F:→ tn801534:還是說有什麼辦法可以確定第一次的request結束了? 07/02 23:10
2F:推 zhadow:從你的程式來看,d和c一樣,放在catchtokenResult中就可以了 07/02 23:35
3F:→ zhadow:在 sendtokenRequest() 用 if..檢查 readystate 不是好做法 07/02 23:36
4F:→ tn801534:我的意思是說sendrequest中做完sendtokenrequest之後檢查 07/02 23:38
5F:→ tn801534:還是說我第二次request直接在給完edittoken後做? 07/02 23:40
6F:→ zhadow:sendtokenrequest 之後檢查的話,得用迴圈檢查,不好. 07/02 23:48
7F:→ zhadow:為什麼不放在catchtokenResult中? 07/02 23:48
8F:→ zhadow:至於你說的第2次request,沒看到實際程式,不知道有什麼影響 07/02 23:50
9F:→ tn801534:所以是在catchtokenresult給完edittoken後直接做第二次囉 07/02 23:50
10F:→ tn801534:是這個意思嗎? 07/02 23:50
11F:→ tn801534:因為我第二次request的url裡面要有edittoken所以要等 07/02 23:51
12F:→ tn801534:第一次做完 07/02 23:51
13F:推 zhadow:嗯,你試看看,不過要做檢查,免得catchtokenresult 07/02 23:57
14F:→ zhadow:一直 request 07/02 23:58