假设我们使用jQuery.ajax()来使用两个参数来发布数据, game_id 和 player_id 。
当我们使用jQuery.ajax()时,服务器接收如下参数:{"_json"=>"game_id=4f6a593a8cb45b16c0000491&player_id=4f68ed4b8cb45b16c0000111"}
我们希望服务器接收如下参数:
{"game_id=4f6a593a8cb45b16c0000491&player_id=4f68ed4b8cb45b16c0000111"}
基本上,ajax()使“_json”成为所有参数的主密钥。有没有办法防止这种情况,或者我们做错了什么?
以下是一些具体代码:
$.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'
});
谢谢!
答案 0 :(得分:1)
$.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 :(得分:1)
jQuery不包含任何带有json_
字段前缀的代码,因此问题出在其他地方。
但是,您需要删除contentType: 'application/json; charset=utf-8'
以确保服务器正确解析POST数据 - 毕竟您没有发布JSON。
如果您的服务器 期望JSON有效负载(根据您希望接收它的字符串不是!),您必须使用data: JSON.stringify({...})
来确保实际发送JSON字符串而不是形式编码的键/值对。