2012-01-02 8 views
0

満足ことはありません私のAJAX呼び出しである:ここでもし、条件(response.Success)ここで

 $(document).ready(function() { 
     $("#btnSignup").click(function() { 
      $.ajax({ 
       type: "POST", 
       dataType: 'json', 
       url: "/Newsletter/Signup", 
       data: $('#signupForm').serialize(), 
       success: function (response) { 
        if (response.Success) { 
         $('#signupMessage').show(0); 
        } 
        else { 
         showValidationErrors(response.Data); 
        } 
       } 
      }); 
      return false; 
     }); 

は私のコントローラです:

[HttpPost] 
    public JsonResult Signup(FormCollection values) 
    { 
     var newsletterSubscriber = new newsletterSubscriber(); 
     TryUpdateModel(newsletterSubscriber); 

     try 
     {    
      newsletterSubscriber.newslettersubscriber_firstname = values["firstName"]; 
      newsletterSubscriber.newslettersubscriber_lastname = values["lastName"]; 
      newsletterSubscriber.newslettersubscriber_email = values["emailAddress"];  

      //Save Subscriber 
      wildlifeDB.AddTonewsletterSubscribers(newsletterSubscriber); 
      wildlifeDB.SaveChanges(); 

      //return RedirectToAction("Index"); 
      return Json(new { result = "success" }); 

     } 
     catch 
     { 
      //Invalid - redisplay with errors 
      //return View("Index"); 
      return Json(new { result = "failure" }); 

     } 
    } 

なぜそれが私のAJAX呼び出しの(あれば」条件応答ということです.Sucess)」は決して満たされない。データがデータベースに入っているのがわかりますか?

答えて

1

{ result: "success" }のようなJSONオブジェクトが返されますが、クライアントコードではSuccessというプロパティがチェックされています。返されるオブジェクトにSuccessというプロパティが含まれていないため、これは機能しません。

コードではif (response.result === 'success')を確認してください。それはうまくいくはずです。

チェックをきれいにするために、私は通常{ success: true }のようなオブジェクトを返します。この場合、コードはif (response.success)と書くことができます。これは目にはかなり簡単です。

+0

ありがとうございます!私はあなたの助けを非常に感謝します。 – user1125648