jQuery AJAX和PHP返回true / false

时间:2014-03-11 18:22:01

标签: javascript php jquery ajax

我想知道如何使用jQuery AJAX从PHP脚本中检索返回true或返回false。这是我目前的ajax调用代码,除了始终指向输入用户名的个人资料页面之外,即使登录实际上没有成功,也可以正常工作...

    $("#signInForm").submit(function() {
        $(document).ajaxStart(function() {
            $("#loading" ).show();
        });
        $.ajax({
            url: "/ajax/signIn.php", // Action of the form
            data: $("#signInForm").serialize(), // Send forms data to server
            dataType: "JSON", // Take response as JSON
            type : "POST", // Send form by post or get
            complete: function(result) {
                $(document).ajaxStop(function() {
                    $("#loading" ).hide();
                });
                $("#ajaxResponse").html(result.responseText);
                $("#ajaxResponse").slideDown("slow");
                var username = $("#usernameSignIn").val();
                setTimeout(function() {
                    window.location.href = "/profile.php?username=" + username;
                }, 3000);
            }
        });
        return false;  // Default submit return false
    });

1 个答案:

答案 0 :(得分:0)

电话完成后,

complete会触发 - 无论结果如何 - 我想只要它需要response - 它是完全可以接受的。

否则,您可能希望使用success,但在这种情况下,您需要做的是根据response

确定要执行的操作

即:

if(response === true){ //proceed }else{ alert("error!"); }

你必须将自己的逻辑放在complete& success仅关注数据的实际传输,而不关注数据的内容。

因此,在您的代码中:

$("#signInForm").submit(function() {
    $(document).ajaxStart(function() {
        $("#loading" ).show();
    });
    $.ajax({
        url: "/ajax/signIn.php", // Action of the form
        data: $("#signInForm").serialize(), // Send forms data to server
            dataType: "JSON", // Take response as JSON
            type : "POST", // Send form by post or get
            complete: function(result) {
                $(document).ajaxStop(function() {
                    $("#loading" ).hide();
                });
                $("#ajaxResponse").html(result.responseText);
                $("#ajaxResponse").slideDown("slow");
if(result.success === true){
                var username = $("#usernameSignIn").val();
                setTimeout(function() {
                    window.location.href = "/profile.php?username=" + username;
                }, 3000);} 
else { //the result.responseText is probably suitable here, eh? so you could just:
$("#ajaxResponse").slideUp(5000); }
            }
        });
        return false;  // Default submit return false
    });