jQuery .ajax()请求PHP代理不接收回显值(仅限FIREFOX)

时间:2011-07-30 22:28:27

标签: php jquery ajax firefox

以下代码在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为空。在这个问题上,我的头靠墙撞了几天。

3 个答案:

答案 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;',现在它完美无缺。