0

我遇到了一些奇怪的事情,我想揭露并知道是否有人对此进行了解释。

前段时间我有一个简单的帖子:

$.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

4

2 回答 2

0

我不知道为什么它以前工作过;也许 jQuery 更新改变了行为?

至于您关于内容类型的问题,$.post 是围绕 $.ajax 的速记包装器,从$.ajax api page来看,contentType 的默认值为 'application/x-www-form-urlencoded'。

AFAIK,您不能使用 $.post() 指定 contentType。不过我可能是错的。

于 2011-04-06T10:43:42.393 回答
-1

$.ajax 的等价物应该是

$.ajax({
    url: "/Route/Save",
    data: { myObj: JSON.stringify(myObj), accessToken: getAccessToken()},
    type: 'POST',       
    success: function (data)
    {
        //Do stuff
    }
});
于 2011-04-06T10:02:37.397 回答