Man ir ajax izsaukums, kas nosūta datus uz lapu, kas pēc tam atgriež vērtību.
Es esmu atguvis veiksmīgu izsaukumu no lapas, bet esmu kodējis to tā, ka tas rada kļūdu asp. Kā es varu iegūt šo kļūdu no jquery?
Piemēram:
cache: false,
url: "addInterview_Code.asp",
type: "POST",
datatype: "text",
data: strData,
success: function (html) {
alert('successful : ' + html);
$("#result").html("Successful");
},
error: function (error) {
**alert('error; ' + eval(error));**
}
Es nesaprotu, kas ir kļūdu daļa. Kāds parametrs man ir jāievada funkcijā, lai es varētu izmantot serverī izsaukto kļūdas ziņojumu.
Nepieciešamie parametri Ajax error
funkcijai ir jqXHR, exception
, un to var izmantot, kā norādīts tālāk:
$.ajax({
url: 'some_unknown_page.html',
success: function (response) {
$('#post').html(response.responseText);
},
error: function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$('#post').html(msg);
},
});
[DEMO FIDDLE]()
jqXHR:
Patiesībā tas ir kļūdas objekts, kas izskatās šādi.
]1
To var apskatīt arī pārlūkprogrammas konsoles logā, izmantojot console.log
iekšpusē error
funkcijas, piemēram:
error: function (jqXHR, exception) {
console.log(jqXHR);
// Your error handling logic here..
}
Mēs izmantojam šī objekta status
īpašību, lai iegūtu kļūdas kodu, piemēram, ja mēs saņemam statuss = 404, tas nozīmē, ka pieprasīto lapu nevar atrast. Tā vispār nepastāv. Pamatojoties uz šo statusa kodu, mēs varam novirzīt lietotājus uz pieteikšanās lapu vai uz jebkuru citu mūsu biznesa loģikai nepieciešamo lapu.
izņēmums:
Šis ir virknes mainīgais, kas parāda izņēmuma veidu. Tātad, ja mēs saņemam 404 kļūdu, exception
teksts būs vienkārši 'error'. Līdzīgi mēs varam saņemt 'timeout', 'abort' kā citu izņēmuma tekstu.
Paziņojums par atcelšanu:
jqXHR.success()
,jqXHR.error()
unjqXHR.complete()
izsaukumi ir atcelti no jQuery 1.8 versijas. Lai sagatavotu savu kodu to iespējamai atcelšanai, izmantojietjqXHR.done()
,jqXHR.fail()
, unjqXHR.always()
.
Tātad, ja izmantojat jQuery 1.8 vai jaunāku versiju, mums būs jāatjaunina veiksmes un kļūdas funkciju loģika, piemēram, šādi:-
// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax("some_unknown_page.html")
.done(function (response) {
// success logic here
$('#post').html(response.responseText);
})
.fail(function (jqXHR, exception) {
// Our error logic here
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$('#post').html(msg);
})
.always(function () {
alert("complete");
});
Ceru, ka tas palīdzēs!
Izmēģiniet šo:
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
Ja vēlaties informēt savu frontend par validācijas kļūdu, mēģiniet atgriezt json:
dataType: 'json',
success: function(data, textStatus, jqXHR) {
console.log(data.error);
}
Jūsu asp skripts atgriež:
{"error": true}
error(jqXHR, textStatus, errorThrown)