Ajax从不启动';成功';使用ASP.NET

本文关键字:使用 ASP NET 成功 Ajax 启动 | 更新日期: 2023-09-27 18:26:25

我正在尝试做一个简单的Ajax调用来从HTML页面注册用户,MVC 4中的函数被调用并运行良好,但它返回的内容从未在Ajax调用中触发"success"函数。

如果我使用浏览器手动访问Register()函数,它运行良好,并返回我想要的消息,但不能通过Ajax

function register() {
    var userModel = {
        phoneNumber: "1236663",
        displayname: "yasuuu",
    }
    $.ajax({
        type: "POST",
        url: "http://localhost:13234/home/register",
        data: userModel,
        success: function (response) {
            $('#deleteThisDivButNotItsContent').html(response)
        }
    })
}
    public ActionResult Register(string PhoneNumber, string DisplayName)
    {
        // Some working code here ...
        ViewBag.Message = "Some Message"; // just trying to display simple text
        return View();
        /* tried all of the lines below too */
        //return this.Json("1234");
        //return Json("{ result : true }");
        //return PartialView("ShowResultPartial", JsonRequestBehavior.AllowGet);
        //CommentSection commentSection = new CommentSection();
        //return PartialView("CommentSection");
        //return PartialView("CommentSection", commentSection);
        //return Json(new { success = true, response = "Saved ok" });
    }

我使用的是JQuery 2.0.3

Ajax从不启动';成功';使用ASP.NET

让它返回JsonResult而不是ActionResult。AJAX究竟如何解释ActionResult视图?

此外,您向Register()方法发送了一个对象,但收到了两个字符串变量。

这里有一个例子:

function register() {
    var userModel = {
        phoneNumber: "1236663",
        displayName: "yasuuu",
    }
    $.ajax({
        type: "POST",
        url: "http://localhost:13234/Home/Register",
        data: userModel,
        success: function (response) {
            $('#deleteThisDivButNotItsContent').html(response.message)
        }
    });
}
publi class UserModel
{
    public string phoneNumber { get; set; }
    public string displayName { get; set; }
}
public JsonResult Register(UserModel userModel)
{
    // Some working code here ...
    return Json(new { message = "Some message here" }, JsonRequestBehavior.AllowGet);
}

为什么不试试这个?

function register() {
$.post("/home/Register",
       {phoneNumber: "1236663", displayname: "yasuuu"},
       function(data,status,xhr){
            $('#deleteThisDivButNotItsContent').html(data.response);
});
}

在控制器中

return Json(new { success = true, response = "Saved ok" });

当您在浏览器中键入http://localhost:1234/register时,它会对该URL发出GET请求。在您的javascript中,jquery正在发出一个POST请求。ajax请求收到404错误,因为路由未配置为响应POST请求。