【问题标题】:Ajax post parameters ASP.NET MVC 3Ajax 发布参数 ASP.NET MVC 3
【发布时间】:2013-07-24 20:46:35
【问题描述】:

大家好,我有下一个用于登录的 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

【问题讨论】:

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


    【解决方案1】:

    看起来您在提交按钮的.click 事件或表单的.submit 事件中编写了此$.ajax 调用,而没有通过从回调中返回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 期间一样冻结,从而破坏所有用户体验。

    【讨论】:

    • 我把 e.preventdefault() 它没有解决问题参数仍然存在,我无法让重定向工作。有趣的是,当我在 firebug 中使用调试时,它会在我通过 ajax 发布后重定向 xD
    • 也许你有一些 javascript 错误?你能在控制台中看到它们吗?
    • 我在控制台中看不到它们中的任何一个。我可以看到它确实会在成功功能上提醒我,但它不会像成功一样更改 url:function (result) { alert(结果.链接); window.location.href = "/Home/Index"; } 并且当我调试它时,它会触发成功功能并重定向工作。
    【解决方案2】:

    尝试在提交函数结束时返回 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 脚本中覆盖它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2011-08-21
      • 2019-01-26
      • 1970-01-01
      相关资源
      最近更新 更多