将表单提交的结果从PHP返回到JavaScript,区分成功和失败

时间:2011-12-28 20:37:39

标签: php javascript jquery sql ajax

jQuery的:

$("#register-form").submit(function(event) {
event.preventDefault();
    $.post("./register.php", {
        username: $("#username").val(), 
        password: $("#password").val(),
        passwordtwo: $("#passwordtwo").val(),
        email: $("#email").val()
    },
    function(response) {
        $("#errors").html(response);
        $("#errors").slideDown("slow");
    });
});

这完美地运行并显示我返回的错误。但如果表单通过了所有检查,我就会遇到问题。

if ($error) {
    echo $error; // returns errors in form
} else {
    // Password Hash & Salt functions are here
    // sets a cookie to log them in here
        header("Location: " . getenv("HTTP_REFERER")); // the problem
}

由于我当前的jQuery函数,响应将返回HTTP_REFERER,因此它会加载我在<div id="errors"></div>内的上一页。

如果通过所有检查,是否有某种成功参数或某种方式做其他事情?

3 个答案:

答案 0 :(得分:2)

如果你发出ajax请求,那么你必须在javascript中重定向。所以你可以做到

$("#register-form").submit(function(event) {
event.preventDefault();
    $.post("./register.php", {
        username: $("#username").val(), 
        password: $("#password").val(),
        passwordtwo: $("#passwordtwo").val(),
        email: $("#email").val()
    },
    function(response) {
        if ( response = '' ) { window.location.reload(); }
        else {
            $("#errors").html(response);
            $("#errors").slideDown("slow");
        }
    });
});

并且在没有任何错误的情况下回音     if($ error){echo $ error; }

更好的方法是使用JSON代替。错误返回{ error: 'Error message' }和其他{ success: true }

然后在javascript方面,你检查是response.error存在

更多信息:http://www.json.org/

答案 1 :(得分:2)

在PHP部分使用 JSON

    if ($error) {
        echo '{"error":"$error", "success":false}'; // returns errors in form
    } else {
        // Password Hash & Salt functions are here
        // sets a cookie to log them in here

        echo '{"error":"", "success":true}';
    }

修改 Javascript 以处理json。

$("#register-form").submit(function(event) {
event.preventDefault();
    $.post("./register.php", {
        username: $("#username").val(), 
        password: $("#password").val(),
        passwordtwo: $("#passwordtwo").val(),
        email: $("#email").val()
    },
    function(response) {
        if(!response.success) { alert("error:" + response.error);}
            else { window.location.reload(); }
    },
    'json' 
    ); // add json type
});

答案 2 :(得分:1)

Shiplu建议的PHP代码非常完美。在ajax调用中使用数据类型:json。

$("#register-form").submit(function(event) { event.preventDefault();
    $.post("./register.php", {
        username: $("#username").val(), 
        password: $("#password").val(),
        passwordtwo: $("#passwordtwo").val(),
        email: $("#email").val()
    },
    function(response) {
        if ( response.success.toString() = 'true' ) { window.location.reload(); }
        else {
            $("#errors").html(response.error);
            $("#errors").slideDown("slow");
        }
    }, "json"); });