我遇到了一些奇怪的东西,我想揭露并知道是否有人作为解释。
有一段时间我有一个简单的帖子:
$.post("/Route/Save", { myObj: JSON.stringify(myObj), accessToken: getAccessToken()}, function(data)
{
//do stuff
});
它运行良好,现在不起作用,只在路由控制器中正确接收到accessToken参数
我把它改为:
$.ajax({
url: "/Route/Save",
data: '{ myObj:' + JSON.stringify(myObj) + ',accessToken:"' + getAccessToken()+'"}',
type: 'POST',
datatype: 'JSON',
contentType: 'application/json',
success: function (data)
{
//Do stuff
}
});
现在它有效。我正在使用firefox 4和IE9并且相信原因与浏览器发送信息编码的方式有关...在$ .post()情况下它看起来像是以application / x-www-form的形式发送数据-urlencoded
我很高兴收到你们的来信!
此致 byte_slave
答案 0 :(得分:0)
我不确定为什么之前有效;也许jQuery更新改变了行为?
关于内容类型的问题,$ .post是$ .ajax的简写包装,而$.ajax api page的内容类型的默认值是'application / x-www-form-了urlencoded”。
AFAIK,您不能使用$ .post()指定contentType。我可能错了。
答案 1 :(得分:-1)
$ .ajax的等价物应为
$.ajax({
url: "/Route/Save",
data: { myObj: JSON.stringify(myObj), accessToken: getAccessToken()},
type: 'POST',
success: function (data)
{
//Do stuff
}
});