2012-05-30 28 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”。如果它会被重新命名为别的东西,它会更加明显。 @ * $ &§......这么简单的重构...

对不起,烦!