如何使$ .post()使用contentType = application / json?

我注意到,当在jQuery中使用$ .post()时,默认的contentType是application / x-www-form-urlencoded - 当我的asp.net mvc代码需要有contentType = application / json

(请参阅此问题,为什么我必须使用application / json:ASPNET MVC - 为什么ModelState.IsValid为false当字段确实有值时,需要x字段?)

我怎样才能让$ .post()发送contentType = application / json? 我已经有了大量的$ .post()函数,所以我不想更改为$ .ajax(),因为它会花费太多时间

如果我尝试

$.post(url, data, function(), "json") 

它仍然有contentType = application / x-www-form-urlencoded。 那么,如果“json”参数不将contenttype更改为json,它究竟做了什么?

如果我尝试

$.ajaxSetup({
  contentType: "application/json; charset=utf-8"
});

这有效,但会影响我拥有的每个$ .get和$ .post,并导致一些中断。

那么是否有某种方法可以改变$ .post()的行为来发送contentType = application / json?


我想你可能不得不

1.修改源文件使$ .post始终使用JSON数据类型,因为它实际上只是预配置的$.ajax调用的快捷方式

要么

2. 定义您自己的效用函数,它是您要使用的$.ajax配置的快捷方式

要么

你可以用你自己的实现通过猴子补丁覆盖$.post function

示例中的JSON数据类型引用从服务器返回的数据类型,而不是发送到服务器的格式。


$.ajax({
  url:url,
  type:"POST",
  data:data,
  contentType:"application/json; charset=utf-8",
  dataType:"json",
  success: function(){
    ...
  }
})

请参阅:jQuery.ajax()


最后我找到了适合我的解决方案:

jQuery.ajax ({
    url: myurl,
    type: "POST",
    data: JSON.stringify({data:"test"}),
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function(){
        //
    }
});
链接地址: http://www.djcxy.com/p/8049.html

上一篇: How to make $.post() use contentType=application/json?

下一篇: JavaScript/jQuery to download file via POST with JSON data