【发布时间】:2012-04-26 04:10:32
【问题描述】:
这是我的 javascript:
function sendAttack(attacker,defender,hpChange){
USER_LAST_TIMESTAMP = Math.round(new Date().getTime() / 1000.0);
var attack = new Attack(TURN_ID,attacker,defender,hpChange);
attack.action_sequence = ACTION_QUEUE;
var attackJSON = JSON.stringify(attack);
jQuery.ajax({
type: "POST",
url: urlLeader + "attacks.json",
data: attackJSON,
success: function(data){
ACTION_QUEUE++;
}
})
}
在setup.js上面加载之前:
jQuery.ajaxSetup({
accepts: 'application/json',
dataType: 'jsonp'
});
这是我调用该函数时服务器收到的内容:
2012-04-26T03:57:44+00:00 app[web.1]: Started GET "/attacks.json?callback=jQuery17103089843031743851_1335412646794&{%22attacker%22:2,%22defender%22:3,%22hp_change%22:6.799999999999997,%22action_sequence%22:0}&_=1335412659141" for 167.206.19.130 at 2012-04-26 03:57:44 +0000
不是“获取”。这是怎么回事?
【问题讨论】:
-
首先,您是否尝试过在帖子中使用不同的数据?硬编码一个值,例如 data: "test=ing" 或 data: { test: 'ing'}。其次,您是否使用 json2.js 为本身不支持它的浏览器启用“JSON.stringify”? (见stackoverflow.com/questions/1480393/…)
-
您在请求中省略了
dataType参数; jQuery 可能会为你改变你的请求类型。 -
dataType 用于返回值。如果指定“contentType”来影响向服务器发送数据,则更有可能。您是否在任何地方更改 jQuery AJAX 默认值?
-
您似乎正在向服务器发送 JSON,在这种情况下,您需要将 processData 设置为 false 并设置适当的 Content-Type 否则 JQuery 会尝试将数据转换为 application/x-www-form- urlencoded MIME 类型。
-
默认类型是“GET”。尝试用分号 (;) 完成 jQuery.ajax 函数,然后检查一次。浏览器的语法可能有问题。