jquery ajax没有从MVC Controller返回成功函数

时间:2016-06-29 06:37:51

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

我在jquery ajax的控制器中点击了一个方法。我在应用程序之外有一个html页面,我正在调用此方法。

以下是ajax页面上的html代码。

function SignIn() {
        var d = JSON.stringify({
            Email: $('#email').val(),
            Password: $('#password').val()
        });

        $.ajax({
            url: "http://localhost:58954/Account/SignIn",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            dataType: "JSON",
            data: d,
            success: function (e) {
                alert('success');

            },
            error: function (e) {
                alert(JSON.stringify(e));
            }
        });
    }

以下是用controller's方法编写的代码。我从这里回来Json object

[AjaxOnly(), HttpPost(), AllowAnonymous()]
    public ActionResult SignIn(AuthenticationModel model)
    {

     // here code written for authentication 

      dynamic jsonData = new {
            Message = errorMessage,
            HasError = HasError,
            RedirectUrl = redirectUrl
        };

        return Json(jsonData);
    }

当ajax代码运行时,它首先进入错误功能,并在警报中显示以下详细信息。

enter image description here

在此之后,它会点击controller中的方法,并且code完全按原样运行,之后它不会返回到ajax调用的成功函数。

它在页面上显示Json object,如下所示:

2 个答案:

答案 0 :(得分:1)

我怀疑你传递数据的方式。

尝试传递数据而不执行 stringify ,看看它是否有效。

答案 1 :(得分:0)

  1. 检查signin方法是否在document.ready function
  2. 如果需要同步调用,则可以使用'async':false
  3. controller signin方法将AuthenticationModel作为输入参数,因此检查ajax方法返回预期的对象,否则在控制器中尝试作为字符串参数
  4. 根据上面的控制器代码,它总是返回jsondata,它总是返回错误对象。