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


Return the result of form submission from PHP to JavaScript, differentiating between success and failure

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>中。

如果它通过了所有检查,是否有某种成功参数或某种方法可以执行其他操作?

在 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
});

如果你发出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端,你检查是否响应。

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

Shiplu 建议的 PHP 代码是完美的。在 ajax 调用中使用 datatype: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"); });