成功时的AJAX重定向覆盖其他逻辑

时间:2012-08-02 19:43:51

标签: javascript jquery ajax redirect

在执行AJAX成功后,我似乎无法重定向到新页面(这是在jQuery Mobile的脚本中)。在以下代码中,如果我执行除重定向之外的其他功能,则会按预期设置sessionStorage。执行重定向时,不会执行sessionStorage代码。建议??

$("#register").click(function () {

    var formData = $("#registerUser").serialize();

    $.ajax({
        type: "POST",
        url: "file.php",
        //dataType:'json',
        cache: false,
        data: formData,
        //success: onSuccess,
        success: function (data) {
            if (data.status == 'success') {

                //execute some code here
                var someValue = (data.id);
                sessionStorage.setItem('someValue', someValue);

            } else if (data.status == 'error') $("#notification").text(data.message);
        },

        complete: function () {
            window.location.replace('newPage.html');
        }
    });

    return false;
});

2 个答案:

答案 0 :(得分:1)

您的成功和完成是相互矛盾的。两者都会在完成时执行。一个人会重定向。移动重定向代码成功,使其在执行其他操作后重定向。

success: function (data) {
    if (data.status == 'success') {

        //execute some code here
        var someValue = (data.id);
        sessionStorage.setItem('someValue', someValue);

        // redirect after success
        window.location.replace('newPage.html');

    } else if (data.status == 'error') {
        $("#notification").text(data.message);
    }
}

答案 1 :(得分:-1)

自己想出这个 - 你必须使用JQM重定向:$.mobile.changePage('newPage.html');

success: function (data) {
    if (data.status == 'success') {

        //execute some code here
        var someValue = (data.id);
        sessionStorage.setItem('someValue', someValue);

        // redirect after success
        $.mobile.changePage('newPage.html');

    } else if (data.status == 'error') {
        $("#notification").text(data.message);
    }
}