2012-05-30 57 views
0

我有一個真正奇怪的問題。使用jQuery.ajax(...)發佈JSON數據突然開始將內容類型(「application/json」或任何其他可能指定的內容類型)放入名爲「Content-CtrlType」的請求標題字段中,而不是「Content-類型」。 「內容類型」 還存在但不包含 「text/plain的」:jQuery.ajax(..)在POST請求中產生一個「Content-CtrlType」標題字段

Screenshot of weird POST request header

我使用jQuery 1.7.2。問題存在於IE9,Firefox 12和Chrome上。沒有測試過其他瀏覽器,因爲我相信它不是瀏覽器相關的。

這是我的JavaScript代碼生成該請求:

... 
var ajaxOptions = { 
    url: url, 
    type: 'POST', 
    dataType: 'json', 
    data: JSON.stringify(params), 
    contentType: 'application/json; charset=utf-8', 
    cache: false, 
    error: function (jqXHR, textStatus, errorThrown) { .... }, 
    success: function(data, textStatus, jqXHR) { .... }, 
    converters: { 
     "text json": function(data) { .... } 
    } 
}; 

$.ajax(ajaxOptions); 

... 

「PARAMS」我的JavaScript對象保持要發送的數據。

任何想法出了什麼問題?

+0

'ajaxOptions.success ='應該只是'success:',因爲它在*'ajaxOptions'中是*開始的。 – Sampson

+0

@Jonathan Sampson - 對不起,我粘貼了縮短的代碼。沒有正確縮短它。剛糾正它。謝謝! – Andreas

+1

我在[小提琴](http://jsfiddle.net/RrKbd/)中複製了您在這裏的代碼,但無法重複您的結果。我只看到正在添加的「內容類型」。 – Sampson

回答

0

那麼,喬納森確認我的代碼沒有問題後,我開始詳細調試會話並跳入jQuery代碼。在這裏我發現了這個問題。可能由於某些重構,請求標題字段「Content-Type」的設置被重命名爲「Content-CtrlType」。如果它會被重新命名爲別的東西,它會更加明顯。 @ * $ &§......這麼簡單的重構...

對不起,煩!