यदि सर्वर 200 से अलग कुछ स्टेटस कोड भेजता है, तो त्रुटि कॉलबैक निष्पादित होता है:
$.ajax({
url: '/foo',
success: function(result) {
alert('yeap');
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert('oops, something bad happened');
}
});
और एक वैश्विक त्रुटि हैंडलर को पंजीकृत करने के लिए आप $.ajaxSetup()
विधि का उपयोग कर सकते हैं :
$.ajaxSetup({
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert('oops, something bad happened');
}
});
दूसरा तरीका JSON का उपयोग करना है। इसलिए आप सर्वर पर एक कस्टम एक्शन फ़िल्टर लिख सकते हैं जो अपवाद को पकड़ता है और उन्हें JSON प्रतिक्रिया में बदल देता है:
public class MyErrorHandlerAttribute : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
filterContext.ExceptionHandled = true;
filterContext.Result = new JsonResult
{
Data = new { success = false, error = filterContext.Exception.ToString() },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
}
और फिर इस विशेषता के साथ अपने नियंत्रक कार्रवाई को सजाने:
[MyErrorHandler]
public ActionResult Foo(string id)
{
if (string.IsNullOrEmpty(id))
{
throw new Exception("oh no");
}
return Json(new { success = true });
}
और अंत में इसे लागू करें:
$.getJSON('/home/foo', { id: null }, function (result) {
if (!result.success) {
alert(result.error);
} else {
// handle the success
}
});