作者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