Ajax / Jquery Redirect не работает - PullRequest
0 голосов
/ 11 июля 2011

Так что с моего php я повторяю {error: 1}:

$(document).ready(function(){
    $('#form').submit(function(e){
        register();
    });
});

function register(){
    $.ajax({
        type:"POST",
        url:"submit.php",
        async : false,
        data: $('#form').serialize(),
        dataType: "json",
        success: function(msg){
            if(parseInt(msg.error)==1){
                window.location="index.html";
            }
            else if(parseInt(msg.error)==0){  
                $('#error_out').html(msg.error);
                e.preventDefault();
            }
        }
    });
}

Но он не хочет перенаправлятьВместо этого он возвращает «submit.php» с 1 эхо.

Ответы [ 2 ]

2 голосов
/ 11 июля 2011

Ну, вы не можете просто получить возврат 1, поскольку это не будет JSON. Если вы просто возвращаете «1» и выполняете parseInt, установите для dataType значение «html».


Если вы хотите JSON, сделайте это на своем PHP:

$return = array('code'=>1);
echo json_encode($return);

Ваша функция «успеха» будет выглядеть так:

if(msg.code==1){
    window.location="index.html";
}
else if(msg.code==0)
{
    $('#error_out').html(msg.code);
    e.preventDefault();
}
else 
{ 
   // handle any other return value.
}

Хорошо, я виноват в том, что неправильно прочитал проблему. Проблема в том, что вы отправляете форму, а не отменяете ее должным образом. Сделайте это в вашем обработчике событий:

$(document).ready(function(){
    $('#form').submit(function(e){
        e.preventDefault();
        register();
    });
});

Вы можете удалить один в вашем случае сбоя. Он ничего не делает, так как к моменту возврата асинхронной функции стек уже очистился бы (если бы вообще).

1 голос
/ 12 июля 2011

Вы должны запретить отправку формы.

$(document).ready(function(){
    $('#form').submit(function(e){
        register();

        e.preventDefault(); // Or return false;
    });
});

Ваша форма отправлена, и у ajax нет шансов обработать ее обратные вызовы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...