Search code examples
javascriptjqueryajaxgoogle-chromejqxhr

JavaScript Ajax (jQuery.post) Bizarre Error: state = "rejected"


So I've been trying to debug my jQuery.post() call, and have been getting some weird responses. I'm stuck on what to do next, if anyone had any suggestions, I'd really appreciate it.

<script type="text/javascript">
var debugresp;
var debugpost;
$("#scan .scanSide button.startScan").click(function() {
    // ...
    console.log("Scanning...");
    debugpost = $.post(
        "scan/scan.php",
        {
            "side": side
        },
        function(response) {
            console.log(response);
            /*...*/
        },
        "xml"
    );
    console.log("Sent data...");
});
<script>

The two console.log() calls outside the $.post work fine, the page returns 200 OK with valid data under the Network tab (Debug tools/Chrome), but the internal console.log(response) never fires.

If you noticed, I saved the return from $.post.

// JavaScript console, while page hasn't returned yet
debugpost.state()
// > "pending"
// After the page returns, and console.log(response) hasn't been called
debugpost.state()
// > "rejected"

I've never tried to deal with problems in jQuery.post, but I wouldn't expect "rejected" from the jqXHR that is returned from $.post.

Might anyone have more debugging suggestions or suggestions on how to approach this?

Resources:
jqXHR jQuery.post(...)


Solution

  • Problem solved: I had invalid XML that I was trying to parse.

    For anyone else reading this, try jqXHR's fail(function(jqXHR, textStatus, errorThrown) to debug.