【问题标题】:jQuery Ajax Call returns error : ASP.NET MVCjQuery Ajax 调用返回错误:ASP.NET MVC
【发布时间】:2016-01-07 10:32:06
【问题描述】:

“HomeController.cs” - 这是我的控制器类。 "ForgotPassword" - 这是上面类中的动作结果方法。

    [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);
                    },

我想在视图中显示成功消息。但是出现错误。实际上是什么问题?如何解决?

【问题讨论】:

  • 您指定了dataType: "json",,但您返回的html(需要是部分视图,而不是视图),因此您需要将其更改为dataType: "html",(或省略它)。你也可以省略contentType: "application/json; charset=utf-8",,直接使用data: { EmailID: emailAddress },
  • @StephenMuecke:谢谢..您的建议有效..

标签: jquery asp.net json ajax asp.net-mvc-4


【解决方案1】:

请注意,您正在从操作中返回 View()。这实际上是 html,这不是 jQuery 所期望的,也可能不是您想要的。

如果没有什么可以返回,执行成功就返回200响应,返回null或者空结果:

return new EmptyResult();

或者,如果有一些 json 要返回,请确保调用它:

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

另外,附带说明一下,您的网址看起来有点奇怪。在这里使用路由解析:

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

【讨论】:

  • 我正在执行该方法。我想在 div 标签中显示成功消息。
  • 出现编译错误:“UrlHelper”不包含“ActionLink”的定义
  • @thevan,是的,服务器端方法调用得很好。问题是它返回 ViewResult,它是 html 响应,而 jQuery 需要 json 响应(在 dataType 参数中设置)。你需要决定其中一个。
  • @thevan,抱歉,应该只是 Url.Action,已修改
猜你喜欢
  • 1970-01-01
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多