>我有一个验证,当成功时创建一个会话变量:
if( password_verify($password, $artist_password) ) { // if this is true
// create $_SESSION artist name
$_SESSION['artist_name'] = $artist_name;
return $artist_name;
} else {
echo "Incorrect Password";
}
此验证由 Ajax 请求启动。
如果验证有错误,我会回显一条消息。 此回显消息由 Ajax 成功方法通过数据参数接收。
$.ajax({
url: '../includes/login_validation.php',
type: 'post',
data: inputs,
success: function(data){
$("span#error_msg").html(data);
},
// returns 'Incorrect Password'
我的问题是定义来自 PHP 文件的返回响应。
例如,当出现错误时,PHP 脚本会回显一条消息,然后通过 Ajax 成功方法接收和处理此响应,并将其放入 html 占位符中。
但是,如果分配了 SESSION 变量,我想返回该数据并将其包含在重定向中。
我的问题是,我如何区分作为返回值的回显响应和包含其他数据的返回值(例如 $_SESSION['artist_name'])。
如果成功,我怎样才能将其包含在我的重定向中,以便重定向的页面可以访问会话变量。
window.location.href="artistWorkshop.php"; // plus session variable
做一点JSON格式化怎么样:
if( password_verify($password, $artist_password) ) { // if this is true
// create $_SESSION artist name
$_SESSION['artist_name'] = $artist_name;
echo '{"status":"success","result":"'.$artist_name.'"}';
} else {
echo '{"status":"error","result":"Incorrect Password"}';
}
接下来,在 JS 中处理输出:
$.ajax({
url: '../includes/login_validation.php',
type: 'post',
data: inputs,
success: function(data){
var obj = JSON.parse(data);
if (obj.status == 'success') {
// redirect
window.location.href="artistWorkshop.php?artist="+obj.result;
}
if (obj.status == 'error') {
// throe error
$("span#error_msg").html(obj.result);
}
},
});
您可以通过这种方式处理多种格式。问题是JS将任何输出解释为成功,因为AJAX调用本身是成功的。现在,您有一条消息来确定请求的实际结果。在您的代码中,要确定 ajax 请求的实际失败,您需要包含一个error
节点:
$.ajax({
url: '../includes/login_validation.php',
type: 'post',
data: inputs,
success: function(data){
$("span#error_msg").html(data);
},
error: function(data){
// handle the error
},
如果你走这条路,看看这个:
http://api.jquery.com/jquery.ajax/