JQuery S.Ajax -Fehlerhandler wird ausgeführt, wenn ReadyState = 4 und Status = 200
-
27-10-2019 - |
Frage
Ich mache einen $ .ajax -Anruf, der eine JSON -Antwort zurückgibt, und alles scheint in Ordnung zu sein, aber anstatt dass der Erfolgshandler aufgerufen wird, wird der $ .Ajax -Fehlerhandler aufgerufen, obwohl der ReadyState = 4 und der Status = 200.
Der $ .ajax-Anruf lautet:-
$.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);
}
});
Und von Firebug ist die Ajax-Antwort:-
{"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> </td><td> </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> </td><td> </td></tr><tr><td>Total price</td><td> £50.00 </td></tr><tr><td> </td><td> </td></tr><tr><td colspan="2">Other info & special instructions </td></tr><tr><td colspan="2"> </td></tr></table>"}]}
Irgendwelche Gedanken darüber, warum es eher fehlerhaft als Erfolg wird?
Vielen Dank
EPX
Lösung
Ihre Antwort JSON ist unter anderem ungültig, Sie müssen den doppelten Zitaten entkommen (\"
Anstatt von "
). Sie haben nicht gepostet, was der Fehlertext (den Wert von err
wie übergeben error
) ist aber ich vermute, dass es sein wird parsererror
.
Ich habe gefunden JsonLint Um sehr nützlich zu sein, um sicherzustellen, dass ich gültige JSON erhalte/sende.