作者averywu (看文不要只會用橫的看)
看板Ajax
標題[問題] Xmlhttp 多次傳遞的問題
時間Mon Nov 15 14:01:29 2010
不才寫了個小表單,讓使用者填入2筆資料後,在按下GET時背景作業儲存。
HTML表單節錄:
<input type = "name" id = "name">
<input type = "name2" id = "name2">
<input type = "button" value = "save" onclick = "getit();">
javascript 代碼節錄:
function getit(){
var id = document.getElementById("name").value;
var url = "s.php?id=" + escape(id);
request.open("GET", url, true);
request.send(null);
request.onreadystatechange = savedata;
getit2();
}
function getit2(){
var id = document.getElementById("name").value;
var url = "s.php?id=" + escape(id);
request.open("GET", url, true);
request.send(null);
request.onreadystatechange = savedata;
}
節錄s.php
$sql = "SELECT Name FROM Phonebook WHERE ID = '$_GET[id]'";
$rel = Mysql_query($sql);
$data = Mysql_fetch_object;
echo $data->Name;
黃色那段MARK掉就正常,不過第二筆就沒處理了。
不MARK掉,Response資料會變很怪。
要怎麼才能讓xmlhttp抓二次資料啊?
(request變數前我HEADER那就宣告好了,所以這裡沒有)
我想過用迴圈,但是跟上面結果是一樣的。
直接用二組open也不行,有一組會沒有回應。
xmlhttp好像也沒有 .close的法子...
--
小惡魔的家
http://blog.pixnet.net/shiuju/
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.124.142.152
1F:→ TonyQ:你request混用所以亂掉了,應該要分開宣告分開拿。 11/15 14:17
2F:→ TonyQ:想像你兩個request共用最後一個onreadystatus的樣子就知道了 11/15 14:18
3F:→ TonyQ:request在這種情境下不要混用。 11/15 14:18
4F:→ averywu:感謝,如果把xmlhttp包成物件再CALL不知道可不可行 11/15 14:34
5F:→ TonyQ:最原始的作法會寫一個 getXMLHttprequest 回傳一個request物 11/15 14:35
6F:→ averywu:我程式裡已經有N個xmlhttp了 Orz...多到自己也很混亂 11/15 14:35
7F:→ TonyQ:再用 var req= getXMLHttprequest(); 去拿。 11/15 14:35
9F:→ TonyQ:盡量不要讓xmlhttp 擴散出去 最少一個request作一個request 11/15 14:37
10F:→ TonyQ:就死掉。不然延伸的race condition 會整死自己的。 11/15 14:37
11F:→ averywu:感謝T大,我目前在半死狀態。Code可以打包回去嗎?科科 11/15 14:43
12F:→ TonyQ:自便 XD 11/15 15:34
13F:→ TonyQ:只是我覺得我那時候沒有寫得很好就是 囧rz 11/15 15:34
14F:→ TonyQ:另外就是要測一下chrome 因為再我寫那段script時還沒有它 11/15 15:34
15F:→ averywu:Chrome還好,我在Mac上開發,Chrome會出的包Safari都跑不 11/15 15:42
16F:→ averywu:掉 11/15 15:43