2014-01-31 3 views
4

У меня есть вопрос о вызове Ajax: вот мой Аякса вызов:MVC Ajax вызова, как обрабатывать ошибочные ответы

$.ajax({ 
    url: "/Article/DeleteArticle/"+id, 
    type: "GET", 
    error: function (response) { 

    }, 
    success: function (response) { 

    } 
}); 

А вот мой контроллер:

public ActionResult DeletePicture(int id) 
{ 
    bool success = Operations.DeleteArticle(id); 
    return null; 
} 

Я хотел бы знаете, что shoulud я верну, чтобы попасть внутрь ошибки? И когда эта функция ошибки называется в основном? Если ошибка происходит на сервере или ..?

И относительно успеха, как я могу передать туда некоторые данные?

Реальный пример из жизни:

Представьте я называю этот метод AJAX удалить статью, когда она будет удалена, поэтому успех я хотел бы показать некоторые сообщения успеха. Если это не удалось в моем действии, я получаю success = false, я хотел бы показать другое сообщение, например: failed.

Как достичь этого?

+0

создать объект JSON и возвратить его от действий. Соответственно обрабатывать обратный вызов – Miller

+0

Когда тайм-аут происходит или действие не существует, возникает ошибка. Но неудача удаления или удаление могут быть успешно обработаны в вашем разделе успеха – Miller

ответ

4

Вы можете обрабатывать ваш Ajax вызовов, создавая объект, представляющий ответ:

public class AjaxResponse 
{ 
     public bool Success { get; set; } 
     public string Message { get; set; } 
    } 
} 

Затем вернуть его следующим образом:

public ActionResult DeletePicture(int id) 
{ 
    // success failed by default 
    var response = new AjaxResponse { Success = false }; 
    try 
    { 
    bool success = Operations.DeleteArticle(id); 
    response.Success = success; 
    // Set a message for UI 
    response.Message = success ? "Success" : "Failed"; 
    } 
    catch 
    { 
     // handle exception 
     // return the response with success false 
     return Json(response, JsonRequestBehavior.AllowGet); 
    } 
    return Json(response, JsonRequestBehavior.AllowGet); 
} 

Затем можно передать данные и обработать его следующим образом :

$.ajax({ 
    url: "/Article/DeleteArticle/", 
    type: "GET", 
    data : { Id : id }, 
    dataType: 'json', 
    error: function (response) { 

    // Handle error from response.Success or response.Message 

    }, 
    success: function (response) { 

     // Handle error from response.Success or response.Message 

    } 
}); 

Ошибка дескриптора может просто отобразить сообщение обратно в элемент HTML или всплывающее окно какого-либо уведомления javascript.

+0

, когда exaccty является ошибкой: называется? – Alnedru

+0

Ошибка вызывается, если ваши вызовы ajax вызывают ошибку, вы также можете попытаться поймать действие. Я расскажу об этом выше, чтобы показать это. – hutchonoid

+0

Обновлено для вас. :) – hutchonoid

1

вы можете использовать его

public ActionResult DeleteArticle(int id) 
{ 
    bool success = Operations.DeleteArticle(id);  

    return Json(success, JsonRequestBehavior.AllowGet); 
} 


$.ajax({ 
    url: "/Article/DeleteArticle/", 
    type: "GET", 
    data : { Id : id }, 
    dataType: 'json', 
    error: function (response) {  
     if(response!=null && response.length!=0) 
     { 
     alert('error'); 
     }  
    }, 
    success: function (response) { 
     if(response) { 
     alert('Success'); 
     } 
    } 
}); 
Смежные вопросы