假设我们使用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'
});谢谢!
发布于 2012-03-21 23:08:50
jQuery不包含任何用json_作为字段前缀的代码,所以问题就在其他地方。
但是,您需要删除contentType: 'application/json; charset=utf-8',以确保服务器正确地解析POST数据--毕竟您没有发布JSON。
如果您的服务器确实期望获得JSON有效负载(根据您期望接收的字符串不会!),则必须使用data: JSON.stringify({...})来确保实际发送JSON字符串,而不是表单编码的键/值对。
发布于 2012-03-21 23:00:13
$.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会为您做的。
https://stackoverflow.com/questions/9814035
复制相似问题