我有一个验证,当成功创建一个会话变量时:
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成功方法通过data参数接收此回显消息。
$.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
答案 0 :(得分:0)
如何进行一些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
},
如果你走那条路,请看看: