首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阻止jQuery.ajax()传递以"_json“作为主参数名的参数?

阻止jQuery.ajax()传递以"_json“作为主参数名的参数?
EN

Stack Overflow用户
提问于 2012-03-21 22:53:35
回答 2查看 558关注 0票数 0

假设我们使用jQuery.ajax()发布带有两个参数的数据,即game_idplayer_id

当我们使用jQuery.ajax()时,服务器接收的参数如下:{"_json"=>"game_id=4f6a593a8cb45b16c0000491&player_id=4f68ed4b8cb45b16c0000111"}

我们希望服务器接收这样的参数:

代码语言:javascript
复制
{"game_id=4f6a593a8cb45b16c0000491&player_id=4f68ed4b8cb45b16c0000111"}

从本质上讲,ajax()使"_json“成为所有参数的主键。有没有办法防止这件事,还是我们做错了什么?

下面是一些特定的代码:

代码语言:javascript
复制
    $.ajax({
        type: 'POST',  
        url: UPDATE_GAME_URL,  
        data: { "game_id" : game_id,
                "player_id" : get_player_id(),
                "turn_set" : JSON.stringify(turn_set) },
        contentType: 'application/json; charset=utf-8',
        dataType: 'json'
    });

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-21 23:08:50

jQuery不包含任何用json_作为字段前缀的代码,所以问题就在其他地方。

但是,您需要删除contentType: 'application/json; charset=utf-8',以确保服务器正确地解析POST数据--毕竟您没有发布JSON。

如果您的服务器确实期望获得JSON有效负载(根据您期望接收的字符串不会!),则必须使用data: JSON.stringify({...})来确保实际发送JSON字符串,而不是表单编码的键/值对。

票数 1
EN

Stack Overflow用户

发布于 2012-03-21 23:00:13

代码语言:javascript
复制
$.ajax({
    type: 'POST',  
    url: UPDATE_GAME_URL,  
    data: { "game_id" : game_id,
            "player_id" : get_player_id(),
            "turn_set" : turn_set },
    contentType: 'application/json; charset=utf-8',
    dataType: 'json'
});

您不需要紧张turn_set,jQuery会为您做的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9814035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档