简体   繁体   中英

JQuery AJAX request show AJAX and PHP errors

I am using a Jquery $.post request to get a JSON response that is generated by PHP. When the request is complete, a success or error message is displayed. During development however, I sometimes have PHP errors which end up being returned instead of the JSON. When this happens, I just get the error message:

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

The code I have now looks like this:

var request = $.post(url, data, null, "json");
request.fail(on_failure);
var on_failure = function(jqXHR, text_status, error_thrown)
{
    $("#text_status").empty().append(error_thrown);
};

I would like to be able to show the PHP error if one is returned rather than just indicate that there is a PHP error (just to speed up debugging). Obviously, if a non-JSON parsing error such as HTTP 404 occurs, I still want to display that. I found a method here that indicates that I can detect this error with something like this

$.ajaxSetup({
    error: function(jqXHR, exception) {
        if (exception === 'parsererror') {
            alert('Requested JSON parse failed.');
        }
    }
});

But it doesn't seem like that helps me because it runs for every request rather than individual requests and (as far as I know) it does not allow access to the error message in the returned data.

No sure what version of jquery are you using. Anyway, did you try to remove the json dataType?

var request = $.post(url, data, null);

Doing this jQuery will guess the dataType for you.

I hate to steal mkross1983's credit, but he has not responded to my request to turn his comment into an answer. mkross1983 said:

Have you tried using Firebug under the "Net" tab to see the results of the requests? Sometimes errors can be seen there that can give some clues to the problem

The Firebug "Net" tab has proved to be a valuable debugging tool. This way I can see exactly what request was made and the response sent to it. It even allows me to see the headers and cookies that were sent with the request.

Thank you mkross1983

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM