【问题标题】:I can't change HTTP request header Content-Type value using jQuery我无法使用 jQuery 更改 HTTP 请求标头 Content-Type 值
【发布时间】:2009-10-30 04:53:45
【问题描述】:

我尝试使用 jQuery 的 AJAX 函数覆盖 HTTP 请求标头内容。看起来是这样的

$.ajax({
  type : "POST",
  url : url,
  data : data,
  contentType: "application/x-www-form-urlencoded;charset=big5",
  beforeSend: function(xhr) {
      xhr.setRequestHeader("Accept-Charset","big5");
      xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=big5");
  },
  success: function(rs) {
    target.html(rs);
  }
});

Content-Type 标头默认为“application/x-www-form-urlencoded; charset=UTF-8”,但显然无论我使用“contentType”还是“beforeSend”方法,我都无法覆盖它的值. 谁能给我一个提示,我该如何或可以更改 HTTP 请求的内容类型值? 非常感谢。

顺便说一句,有什么好的文档可以研究 JavaScript 的 XMLHttpRequest 的编码处理吗?

【问题讨论】:

  • stackoverflow.com/questions/1145588/…,这是一个重复的问题。
  • @Jim:不是真的;另一个 Q 是关于 Accept 标头,而不是关于设置内容类型。
  • 来自 jQuery ajax 文档:数据将始终使用 UTF-8 字符集传输到服务器;您必须在服务器端对此进行适当解码。 api.jquery.com/jQuery.ajax

标签: javascript jquery ajax encoding


【解决方案1】:

根据 jQuery 文档,字符集将始终为 UTF-8:http://jqapi.com/#p=jQuery.ajax。我想accept-charset也是如此。

Big5 是 UTF-8 的子集,对吧?所以应该可以在服务器端对其进行编码和解码。

【讨论】:

  • [nitpicking] 不,Big5 不是 UTF-8 的子集,但它很可能是 Unicode 的子集。
【解决方案2】:

您查看过 w3.org 文档吗?使用 Accept-Charset 标头似乎有一些限制。 http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method

【讨论】:

  • 谢谢,但即使 Accept-Charset 被删除,问题仍然存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
  • 2018-08-27
  • 2019-10-19
  • 2017-11-13
  • 1970-01-01
  • 2021-02-12
相关资源
最近更新 更多