gestionnaire d'erreurs Jquery S.Ajax en cours d'exécution si readystate = 4 et status = 200

StackOverflow https://stackoverflow.com/questions/5852257

Question

Je fais un .ajax $ appel, qui renvoie une réponse JSON et tout semble bien, mais au lieu du gestionnaire de succès invoqué, le gestionnaire d'erreur $ .ajax est invoquée même si le readystate = 4 et le statut = 200.

L'appel .ajax $ est: -

    $.ajax({
        url: 'inc/ajax_printorder.asp',
        type: "GET",
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        success: function (sendresponse) {
            var message = (typeof sendresponse.jsonresp) == 'string' ? eval('(' + sendresponse.jsonresp + ')') : sendresponse.jsonresp;
            if (message[0].ok == '1') {
                var order = window.open('', 'PrintWindow', 'width=600,height=600');
                var html = '<html><head><title>Print Your Order</title></head><body><div id="myprintorder">' + $('<div />').append(message[0].msg) + '</div></body></html>';
                order.document.open();
                order.document.write(html);
                order.document.close();
                return false;
            };
        },
        error: function (xhr, err) {
            alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);
            alert("responseText: " + xhr.responseText);
        }
    });

et de Firebug, la réponse Ajax est: -

{"jsonresp":[{"__type":"sendresponse","ok":"1","msg":"<h1>Your www.sandwichlunchesnewbury.co.uk order on 02/05/2011 00:34:01</h1><p>Website order from www.sandwichlunchesnewbury.co.uk on 02/05/2011 00:34:01 from:- </p><table width="60%" style="border:1px solid blue;padding:5px;"><tr><td>Name</td><td> a </td></tr><tr><td>Phone</td><td> b </td></tr><tr><td>Email</td><td>  </td></tr><tr><td>Business name</td><td>  </td></tr><tr><td>Delivery address</td><td> c </td></tr><tr><td>Date food required</td><td> Monday, 02/05/2011 </td></tr><tr><td>Time food required</td><td> 10 Am </td></tr><tr><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>Just Sandwiches (standard)</td><td>  </td></tr><tr><td>Just Sandwiches (gourmet)</td><td>  </td></tr><tr><td>Just Baguettes (standard)</td><td>  </td></tr><tr><td>Just Baguettes (gourmet)</td><td>  </td></tr><tr><td>Gourmet Bread Sandwiches</td><td> 2 </td></tr><tr><td>Sausage rolls</td><td>  </td></tr><tr><td>Cookie boxes</td><td>  </td></tr><tr><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>Total price</td><td> &pound;50.00 </td></tr><tr><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td colspan="2">Other info & special instructions </td></tr><tr><td colspan="2"> </td></tr></table>"}]}

Toute réflexion sur la raison pour laquelle sa va erreur plutôt que le succès?

Merci

epx

Était-ce utile?

La solution

Votre réponse JSON est invalide, entre autres choses, vous devez échapper aux guillemets doubles (\" au lieu de "). Vous ne publiez pas ce que le texte d'erreur (la valeur de err comme passé à error) est, mais je pense que ce sera parsererror.

Je l'ai trouvé JSONLint très utile pour assurer que je reçois / envoyer JSON valide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top