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