2015-10-09 229 views
0

「HomeController.cs」 - 這是我的控制器類。 「ForgotPassword」 - 這是上述類中的動作結果方法。jQuery Ajax調用返回錯誤:ASP.NET MVC

[HttpPost] 
    public ActionResult ForgotPassword(string EmailID) 
    { 
     SendMail(EmailID); 
     return View(); 
    } 

在SendMail()函數中,我正在向正在傳遞的EmailID發送驗證鏈接。 我打電話通過jQuery的Ajax方法這個方法象下面這樣:

$('#btnSubmit').click(function (e) { 

      var emailRegex = new RegExp(/^([\w\.\-]+)@@([\w\-]+)((\.(\w){2,3})+)$/i); 
      //var emailRegex = new RegExp(/^([\w-\.]+)@@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/); 
      var emailAddress = $("#txtEmail").val(); 
      //alert(emailAddress); 
      var valid = emailRegex.test(emailAddress); 
      if (!valid) { 
       alert("Please Enter Valid Email address"); 
       return false; 
      } else { 
       alert(emailAddress); 
       //return true; 
       $.ajax({ 
        url: '@Url.Content("~/Home/ForgotPassword")', 
        async: false, 
        type: "POST", 
        data: JSON.stringify({ 'EmailID': emailAddress }), 
        dataType: "json", 
        contentType: "application/json; charset=utf-8", 
        error: function (response) { 
         alert("Error"); 
         alert(JSON.stringify(response)); 
         //$("#errMsg").css('background', 'red'); 
         //$("#errMsg").html(data.Message); 
        }, 
        success: function (response) { 
         //$("#errMsg").css('background', 'green'); 
         //$("#errMsg").html("Mail Sent"); 
         alert(JSON.stringify(response)); 
        } 

       }); 
      } 
     }); 

這是我的看法:

<input type="text" name="EmailID" id="txtEmail" width="600" /> 
    <input type="submit" name="btnSubmit" id="btnSubmit" value="Send" /> 

我調用此方法時,「btnSubmit按鈕」的按鈕,點擊。

一切工作正常。 SendMail()函數被調用並且郵件也被髮送到正在傳遞的mailid。但我在jQuery Ajax中出錯。

error: function (response) { 
         alert("Error"); 
         alert(JSON.stringify(response)); 
         //$("#errMsg").css('background', 'red'); 
         //$("#errMsg").html(data.Message); 
        }, 

我想在視圖中顯示成功的消息。但是會出錯。究竟是什麼問題?如何解決這個問題?

+0

您指定'數據類型:「JSON」,'但你返回HTML頁面(這需要一個局部視圖,而不是一個視圖),所以你需要將其更改爲'數據類型: 「html」,「(或者只是省略它)。您也可以省略'contentType:「application/json; charset = utf-8」,'並使用'data:{EmailID:emailAddress},' –

+0

@StephenMuecke:謝謝..您的建議有效.. – thevan

回答

2

請注意,您要返回操作中的View()。這實際上是html,這不是jQuery所期望的,大概不是你想要的。

如果有什麼回報,成功執行僅200響應,返回null或空的結果:

return new EmptyResult(); 

或者,如果有一些JSON返回,請確保調用它:

return Json(new {result="Success"}); 

另外,作爲一個附註,你的URL看起來有點奇怪。利用路由解析在這裏:

url: '@Url.Action("ForgotPassword", "Home")' 
+0

我正在執行方法。我想用div標籤顯示成功消息。 – thevan

+0

正在編譯錯誤:'UrlHelper'沒有包含'ActionLink'的定義 – thevan

+0

@thevan,是的,服務器端方法被稱爲罰款。問題在於它返回ViewResult,它是html響應,而jQuery需要json響應(在'dataType'參數中設置)。你需要決定一個或另一個。 – Andrei

相關問題