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();
    }
});


至於為什麼 IE 可以而 FireFox 則出錯,可能是因為 IE 中的 xmlhttp 對像和 FireFox 的 XmlHttpRequest 行為稍有不同造成的。

 

轉自 http://www.cnblogs.com/RChen/archive/2007/11/22/968992.html

arrow
arrow
    全站熱搜

    carllee413 發表在 痞客邦 留言(0) 人氣()