在发布JSON时是否需要为jQuery ajax显式设置contentType?

时间:2014-03-14 20:36:38

标签: javascript jquery ajax json

$.ajax({
    url: Settings.get('serverURL') + 'PlaylistItem/CreateMultiple',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(newItems)
});

我明确设置了AJAX请求的contentType,以指示JSON正在通过网络发送。但是,我的代码中的contentType应用程序似乎不一致,并且所有AJAX请求都正常工作。

明确使用JSON contentType是否必要或有益,还是应该省略它?

1 个答案:

答案 0 :(得分:1)

根据JQuery文档

  

contentType(默认值:'application / x-www-form-urlencoded;   charset = UTF-8')类型:字符串将数据发送到服务器时,请使用此选项   内容类型。默认为“application / x-www-form-urlencoded;   charset = UTF-8“,这在大多数情况下都适用。如果你明确通过   在内容类型为$ .ajax(),然后它总是发送到服务器   (即使没有数据发送)。 W3C XMLHttpRequest规范   规定字符集始终是UTF-8;指定另一个字符集   不会强制浏览器更改编码。

在实践中,我发现在$ .ajax或

中明确说明它是有益的
$.ajaxSetup({
   contentType: "application/json; charset=utf-8"
});

application / x-www-form-urlencoded 导致我在MVC操作参数中偶尔出现空值

http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx/