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>
内的上一页。
如果通过所有检查,是否有某种成功参数或某种方式做其他事情?
答案 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"); });