jQuery .ajax()请求到PHP代理不接收回显值(FIREFOX ONLY)
以下代码在Chrome和Safari中完美工作,但在Firefox中非常好用。
首先是javascript:
$.ajax('/sn.php',{
type: 'POST',
dataType: 'json',
data: {...stuff},
complete: function(response){
console.log(response);
// do stuff with response...
}
});
和PHP中继(在我的服务器上),使用cURL()POST或GET从另一个域:
// setup cURL...
$token = curl_exec($handle);
echo $token;
error_log('token='.$token);
$ token在error_log中完美显示,并且在Chrome和Safari中一切正常,但在Firefox中,ajax状态为“错误”,responseText为空。 在这一天里,我的头靠在墙上撞了两天。
Firefox没有像Webkit浏览器那样的本机console.log
。 注释掉或用alert()
替换它,我敢打赌它的工作原理。
我可能会在这里咆哮错误的树,但我怀疑这是在你的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的想法。您的web服务器是否为请求返回正确的MIME类型? 你可以尝试做一个beforeSend并设置overrideMimeType
对于ajax请求,Firefox返回Status: 0
。 基于这篇博客文章,我更新了我的表单到onSubmit='return false;'
现在它完美。
上一篇: jQuery .ajax() request to PHP proxy not recieving echoed value (FIREFOX ONLY)