以下代码在Chrome和Safari中完美运行,但在Firefox中却很棒。
首先是javascript:
$.ajax('/sn.php',{
type: 'POST',
dataType: 'json',
data: {...stuff},
complete: function(response){
console.log(response);
// do stuff with response...
}
});
和使用cURL()从另一个域POST或GET的php中继(在我的服务器上):
// setup cURL...
$token = curl_exec($handle);
echo $token;
error_log('token='.$token);
$ token完美地显示在error_log中,并且一切在Chrome和Safari中都很完美,但在Firefox中,ajax状态为“error”,而responseText为空。在这个问题上,我的头靠墙撞了几天。
答案 0 :(得分:1)
我可能会在这里咆哮错误的树,但我怀疑这是你的php代码中对error_log的调用。如果你删除它,它有帮助吗?
此外,也可以在.ajax请求上设置错误处理程序,例如
$.ajax('/sn.php',{
type: 'POST',
dataType: 'json',
data: {...stuff},
complete: function(response){
console.log(response);
// do stuff with response...
},
error: function (jqXHR, textStatus, errorThrown){
console.dir(jqXHR);
console.log(textStatus);
console.log(errorThrown);
}
});
它不会解决问题,但它至少会给你一些调试输出来查看
编辑结合来自249692的更多想法。您的网络服务器是否为请求返回correct mime type?您可以尝试执行beforeSend并设置overrideMimeType
答案 1 :(得分:1)
Firefox没有像Webkit浏览器那样的本地console.log
。用alert()
注释或替换它,我敢打赌它有效。
答案 2 :(得分:1)
Firefox正在返回Status: 0
以获取ajax请求。基于此blog post的抬头,我将表单更新为onSubmit='return false;'
,现在它完美无缺。