0

こんにちは、ログイン用の次の ajax 呼び出しがあります。フォームをシリアル化し、データをサーバーに送信して、リダイレクト URL リンクを返します。私の問題は、投稿後の私の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
4

2 に答える 2

0

送信ボタンのイベントまたはフォームのイベントで、コールバックから false を返すか、引数を呼び出してデフォルト アクションをキャンセルせずに、この$.ajax呼び出しを記述したようです。コードは次のようになります。.click.submitpreventDefault

$('#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ではありません。これは、Ice Age 2 のようにクライアント ブラウザがフリーズし、すべてのユーザー エクスペリエンスを台無しにする Web サーバーへのブロック同期呼び出しです。

于 2013-07-24T20:52:18.663 に答える
0

submit 関数の最後に 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 スクリプトでオーバーライドするのではなく、コントローラーから正しいリダイレクトリンクを返すことです。

于 2013-07-25T09:05:17.240 に答える