【问题标题】:jQuery Ajax POST changes Content-Type in FirefoxjQuery Ajax POST 更改 Firefox 中的 Content-Type
【发布时间】: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
       }
    });
    

【问题讨论】:

    标签: ajax jquery firefox content-type


    【解决方案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,我会得到内容类型的标题。
    猜你喜欢
    • 2012-07-07
    • 2017-02-23
    • 2013-04-15
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 2013-07-31
    • 2019-07-20
    相关资源
    最近更新 更多