close
通過 FireBug 抓取 ajax 回發後得到的頁面信息如下:
HTTP Error 411 - Length required
經過 google 搜索發現,這個 HTTP 狀態碼對應於服務器沒有接收到 Content-Lengh 這個 Header 的情況。(我用的服務器是 Apache + mod_python,當然不一定所有 Web 服務器行為都是這樣。)
而為什麼只有在 Ajax 的情況下有呢?是因為調用了:
xmlHttp.send(null);
發送 null 的時候,服務器就有可能發出以上信息。而按照正常邏輯,不需要發送信息的時候,應該用 GET 方法而不是 POST (在 xmlHttp.open 方法中指定),那樣就能解決此問題。
但也可以用:
xmlHttp.send('');
來解決。
因為我調用了 jQuery 的 $.ajax 方法來間接實現的 Ajax 功能,所以,jQuery 中調用 $.ajax 時,無論有沒有數據,總是寫一個空字符串為數據,就可以避免這種問題了:
$.ajax({
"type": "POST",
"url": "/note/ajax_get/?id=" + note.data_id,
"dataType": "json",
"data": '',
"success": function(msg){
saveNoteInfo(id, msg);
fillImp();
}
});
"type": "POST",
"url": "/note/ajax_get/?id=" + note.data_id,
"dataType": "json",
"data": '',
"success": function(msg){
saveNoteInfo(id, msg);
fillImp();
}
});
至於為什麼 IE 可以而 FireFox 則出錯,可能是因為 IE 中的 xmlhttp 對像和 FireFox 的 XmlHttpRequest 行為稍有不同造成的。
轉自 http://www.cnblogs.com/RChen/archive/2007/11/22/968992.html
全站熱搜
留言列表