jQuery Ajax POST 更改 Firefox 中的 Content-Type
Posted
技术标签:
【中文标题】jQuery Ajax POST 更改 Firefox 中的 Content-Type【英文标题】:jQuery Ajax POST changes Content-Type in Firefox 【发布时间】:2014-01-06 22:57:59 【问题描述】:我正在进行 Ajax 调用以将字段、对象和数组的集合发布到 php。十分之九,这工作得很好。但是当多次提交相同的请求(数据没有变化)时,请求偶尔会发送 Content-Type: text/plain 或 text/html 而不是 application/x-www-form-urlencoded,导致问题我的PHP。 JSON 可能更可取,但谁能想到为什么会发生这种情况?
这不是跨域请求。 这只发生在 Firefox 中。 我认为我不需要指定 Content-Type,因为 Ajax 会默认。 我明确致电$.param()
,但我认为我不需要。
我期望 JSON 作为回报。
$.ajax(url: action,
type: "POST",
dataType: "json",
data: $.param($(domElement).data()),
complete: function()
// Cleanup
,
success: function(data)
// Handle success.
,
error: function()
// Handle error
);
【问题讨论】:
【参考方案1】:不知道为什么这只发生在 Firefox 中,但是如果您手动设置内容类型会有所帮助吗?
$.ajax(url: action,
type: "POST",
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
dataType: "json",
data: $.param($(domElement).data()),
complete: function()
// Cleanup
,
success: function(data)
// Handle success.
,
error: function()
// Handle error
);
【讨论】:
尝试一下。它似乎减少了出现的次数,但我仍然看到它们。我想知道它是否与 Ajax 如何或何时确定内容类型以及我的数据通过 jQuery 附加到 DOM 对象这一事实有关。 这似乎是对的:如果我在 dom 元素上使用 .val() 而不是 .data,我会得到内容类型的标题。以上是关于jQuery Ajax POST 更改 Firefox 中的 Content-Type的主要内容,如果未能解决你的问题,请参考以下文章
ajax post - 我想更改 Accept-Encoding 标头值
XMLHttpRequest、jQuery.ajax、jQuery.post、jQuery.get 有啥区别