2016-03-26 22 views
0

Çeşitli işlemler gerçekleştirdiğimde döndüğüm karmaşık bir türüm var. Ve herhangi bir hataları göstermek için özel bir JSON nesnesini nasıl geri gönderebileceğimi bilmek istiyorum. Aşağıdaki kodu düşününC# asp.net mvc özel hata yönetimi JSON ile

İş Katmanı

public ResultObject StartJob(string jobName){ 
    ... 
    return new ResultObject{ErrorMessage = "Job cannot be started due to ..."}; 
} 

= false, ajax çağrısı yine de başarılı

bana başarıyı dönen rağmen ajax yazı gerçekleştirmek
[HttpPost] 
public ActionResult StartJob(string jobName){ 
    var resultObject = BusinessLayer.StartJob(jobName); 

    if (resultObject.HasErrors){ 
     return Json(new {success = false, message = resultObject.message}, JsonRequestBehavior.AllowGet); 
    } 
    else{ 
     return Json(new {success = true}, JsonRequestBeahvior.AllowGet); 
    } 
} 

olan Kontrolör ve jQuery çağırmaz error() yöntemi.

Bu tür desen, birçok kez tekrarlanır.

+0

istemci tarafında başarı değerini kontrol ve gitmek Ajax başarı içine işlemek istiyorsanız değeri hiç denilen olurdu ne yanlış çağrı olduğunda error() yöntemi. 'if (data.success) {...} else {myerror (data.message);}' – Nkosi

+0

Jquery, aramanın başarılı olup olmadığını belirlemek için özel json nesnesi başarı bayrağına bakmaz. kod döndü. Örneğinizde 200 OK cevabı döndürülecek, bu nedenle hata işleyicisi çalıştırılmayacaktır. @Nkosi'nin belirttiği gibi, ajax etkinliğinizin başarı işleyicisinde data.success işaretini kontrol edebilirsiniz. – Macilquham

cevap

1

Burada "sorun", ajax çağrısının başarılı olması. JQuery yalnızca ajax çağrısı başarısız olduğunda 'error()' yöntemini yürütür. Sen ') (hatası' istemci tarafı Geri aramada başarı değişkeninin değerini okumak ve eğer yanlış sonra çağırmalıdır yani

if (!data.success) 
{ 
    error(); 
} 
+0

Sanırım daha kolay olacak diye kendim halledeceğim. Teşekkürler –

0

sonra atmak hata olayı tetiklemek istiyorsanız Onun başarısı Olay arayacaktım arasında özel bir istisna. İstisnasız istisnai tutmayın, hata içeride olacaktır.

error: function() { 
        ....... 
        ....... 
       } 

Yoksa bu durumda

success: function(data) { 

      if (!data.success) 
      { 
       error(); 
      }