Запрос jQuery .ajax не имеет никакого эффекта - PullRequest
1 голос
/ 09 мая 2011

Я пытаюсь создать систему входа в систему jquery, но когда я отправляю форму, появляется анимированный GIF, но больше ничего.

Вот код:

$(function(){
    // Quand le formulaire est envoyé
    $('#submit').click(function () {
        // Fade out
        var html = '<div id="head">Connexion en cours...</div>'+
            '<div style="width:100%; text-align: center; margin-top:80px;"><span id="status">Prise de contact avec le serveur</span><span id="img"><br><img src="../img/loaders/bar_blue.gif"></span></div>';
        replaceandfade('#center',html, 10);
                $('#user').attr("disabled", true); 
                $('#pswd').attr("disabled", true); 
                var user = $('#user').val();
                var pswd = $('#pswd').val();
                // On envoie les infos de connexion
                $.ajax({
                    type: "POST",
                    url: "ajax_login.php",
                    data: "user=bob&pswd=bob",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(data) {
                        $("#status").html("En attente de la réponse");
                        alert(data);
                        if(data.login == "failed"){
                            $("#img").html('');
                            $("#status").html("Le nom d'utilisateur ou le mot de passe saisie est invalide");
                        } else if(data.login == "success"){
                            $("#status").html("Connexion aprouvé, un instant...");
                        } else {
                            $("#status").html("Une erreur est survenu.");
                        };
                    }
                });
    });// END OF #submit.click
}) // END OF onload

Страница ajax_login.php возвращает: {"login":"failed"}

Но пока он ничего не делает.

replaceandfade функция

function replaceandfade(div, content, sec) {
    setTimeout(function() {
        $(div).fadeOut("fast", function() {
            $(div).html(content);
            $(div).fadeIn("fast", function() {});
        });
    }, sec)
}

1 Ответ

3 голосов
/ 09 мая 2011

Ваш запрос не обрабатывает результат ошибки, поэтому, если запрос завершится неудачей (например, сервер не найден или, скорее всего, ответом является ошибка 500 сервера), то ничего не произойдет.

Вы можете добавить обработчик ошибок, используя функцию error, например:

$.ajax({
    // Other parameters
    success: function(data) {
        alert(data);
    }, 
    error: function(jqXHR, textStatus, errorThrown) {
        alert("Request failed");
    }
});

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

См. документацию для получения дополнительной информации.

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