在请求的页面中显示PHP错误

时间:2014-06-02 14:07:13

标签: php ajax debugging

我在PHP页面上有一些Ajax,它会多次请求另一个PHP页面来处理部件号并返回某些信息。唯一的问题是当我不小心在它要求的页面上发生某种PHP错误时我不知道我在PHP页面上做错了什么,因为控制台只返回" undefined"当我尝试使用console.log(response.my_var);在控制台中打印响应变量。如何调试我要求的PHP页面?我似乎无法让PHP返回任何错误,它只是崩溃,JavaScript返回那些未定义的响应变量。有没有办法让我访问应该生成的PHP错误?这是我正在使用的Ajax请求代码:

function imagething(){
if(!done) {
    var url = "process_parts.php";

    $.ajax({
        //async: false, defaults to async
        url: url,
        type: 'POST',
        data: {
            offset: offset,
            limit: limit,
            parts: parts,
            part_delimiter: part_delimiter,
            diagram_format: diagram_format
        } 
    }).done(function(response) {
        //This is what produces "undefined"--> console.log(response.part_delimiter);
        if (response.processed !== limit) {
            // asked to process 20, only processed <=19 - there aren't any more
            done = true;
        }
        if(response.table_data != '') {
            $('#myTable > tbody:last').append(response.table_data);
        }
        if(response.image_format != '') {
            $('#third_th').append(" (format: "+response.image_format+")");
            $('#fourth_th').append(" (format: "+response.diagram_format+")");
            $('#fifth_th').append(" (format: "+response.pdf_format+")");
        }
        offset += response.processed;
        $('[data-toggle="tooltip"]').tooltip({'placement': 'top'});
        $("#mybox").html("<span class=\"color_blue\">Processed a total of " + offset + " parts.</span>");
        imagething(); //<--------------------------recursive call
    }).fail(function(jqXHR, textStatus) {

        $("#mybox").html("Error after processing " + offset + " parts. Error: " + textStatus);

        done = true;
    });
}
}
imagething();

1 个答案:

答案 0 :(得分:1)

许多方法都可以做到这一点。 首先,您可以使用谷歌浏览器并按Ctrl + Shift + I ...现在单击网络选项卡,您可以轻松查看您的ajax调用的发送/响应值。 如有必要,您甚至可以在ajax PHP中回显/打印出来。 我个人将这个ajax URL请求复制并粘贴到另一个窗口,以这种方式查看响应(通常使用额外的GET变量,如_debug = 1定义。

您也可以通过CURL请求执行此操作,再次从Google Chrome网络页面捕获CURL命令(&#39;复制为CURL命令&#39;)

最后,如果您无法使用Chrome,则可以使用Charles Proxy等网络嗅探器拦截流量。