1

我正在尝试执行一个简单的 Ajax 调用来从 HTML 页面注册用户,MVC 4 中的函数被调用并且运行良好,但它返回的内容永远不会触发 Ajax 调用中的“成功”函数。

如果我使用浏览器手动访问 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

4

3 回答 3

0

你为什么不试试这个?

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" });
于 2013-08-04T05:00:12.923 回答
0

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

于 2013-08-07T02:37:19.057 回答
0

让它返回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);
}
于 2013-08-04T14:14:36.490 回答