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