如何使$ .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