Ajax post参数ASP.NET MVC 3

时间:2013-07-24 20:46:36

标签: ajax asp.net-mvc asp.net-mvc-3 jquery asp.net-ajax

大家好,我有下一个ajax登录电话。我序列化表单并将数据发送到服务器并返回重定向url链接。我的问题是我发布后的网址就像

http://localhost:50802/?username=&password= and not http://localhost:50802/Home

$.ajax({
                type: "POST",
                url: "Login/Login",
                dataType: 'json',
                contentType: "application/json; charset=utf-8",
                data: loginJson,
                cache: true,
                async: false,
                complete: function (result) {
                    alert(result.link);
                    window.location.replace = "/Home/Index";
                },
                error: function () {
                    $("#username").val("");
                    $("#password").val("");
                    alert("Wrong Username or Password!");
                }
            }); //end ajax call

2 个答案:

答案 0 :(得分:0)

看起来您在提交按钮的$.ajax事件中或在表单的.click事件中编写了此.submit调用,而没有通过从回调中返回false来取消默认操作或者通过在论证上调用preventDefault。以下是您的代码的外观:

$('#id_of_your_form').submit(function(e) {
    e.preventdefault(); // <-- That's what I am talking about and what you forgot

    $.ajax({
        type: "POST",
        url: "Login/Login",
        dataType: 'json',
        contentType: "application/json; charset=utf-8",
        data: loginJson,
        cache: true,
        async: false,
        complete: function (result) {
            window.location.replace = "/Home/Index";
        },
        error: function () {
            $("#username").val("");
            $("#password").val("");
            alert("Wrong Username or Password!");
        }
    }); //end ajax call
});

另外async: false, ?????你知道这是做什么的,对吗?这不是AJAX。这是对您的网络服务器的阻塞同步调用,在此期间客户端浏览器将被冻结,就像在冰河世纪2期间破坏所有用户体验一样。

答案 1 :(得分:0)

尝试在提交功能结束时返回false

$('#id_of_your_form').submit(function(e) {
$.ajax({
    type: "POST",
    url: "Login/Login",
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    data: loginJson,
    cache: true,
    async: false,
    complete: function (result) {
        window.location = "/Home/Index";
    },
    error: function () {
        $("#username").val("");
        $("#password").val("");
        alert("Wrong Username or Password!");
    }
}); //end ajax call
return false; });

另一种选择当然是从控制器返回正确的重定向链接,而不是在java脚本中覆盖它。