我的服务器响应为 true
或 false
。我一直在尝试弄清楚如何使用以下脚本检查成功
返回值是否为true
或false
:
$('form[data-async]').on('submit', function(event) {
var $form = $(this);
var $target = $($form.attr('data-target'));
$("input#login").val('Connexion...');
$.ajax({
type: $form.attr('method'),
url: $form.attr('action'),
data: $form.serialize(),
cache: false,
success: function(data) {
if (data == true) {
alert('success : user logged in');
} else {
alert('Erreur login');
}
},
error: function(){
alert("failure");
}
});
event.preventDefault();
});
我一直在尝试数据的所有可能值,例如 data == 'true' & data == 1
但仍然不起作用。有什么想法吗?
这是被调用的函数:
function login ($username, $password){
if (!isset($_SESSION['vivvo'])){
$_SESSION['vivvo'] = array();
}
if (isset($_SESSION['vivvo']['login_fail_time']) && ($_SESSION['vivvo']['login_fail_time'] < (VIVVO_START_TIME - 60*60))){
$_SESSION['vivvo']['login_fail'] = 0;
$_SESSION['vivvo']['login_fail_time'] = 0;
}
if ($_SESSION['vivvo']['login_fail'] >= 3){
$this->set_error_code(2751);
return false;
}
$user_list = $this->get_user_list(null);
$user = $user_list->get_user_data($username, $password);
if ($user == false){
$_SESSION['vivvo']['login_fail'] = $_SESSION['vivvo']['login_fail'] + 1;
$_SESSION['vivvo']['login_fail_time'] = time();
if ($_SESSION['vivvo']['login_fail'] >= 3){
$this->set_error_code(2751);
}elseif ($_SESSION['vivvo']['login_fail'] >= 2){
$this->set_error_code(2752);
}else{
$this->set_error_code(2753);
}
return false;
}else{
if ($user->get_activated() == '1'){
$sm =& vivvo_lite_site::get_instance();
$sm->user = $user;
$sm->user->set_privileges();
if (!isset($_SESSION['vivvo'])){
$_SESSION['vivvo'] = array();
}
$_SESSION['vivvo']['user_id'] = $sm->user->get_id();
$_SESSION['vivvo']['user_domain'] = VIVVO_USER_SOURCE;
$_SESSION['vivvo']['login_fail'] = 0;
$_SESSION['vivvo']['login_fail_time'] = 0;
session_regenerate_id();
return true;
}else{
$this->set_error_code(2754);
return false;
}
}
}
最佳答案
请注意,在您的 success
事件中,data
参数通常表示请求响应中的元素,采用 JSON 格式。因此,在响应中,使用名为 returnValue
的参数设置一个 JSON 对象,该参数的值为 true
或 false
。然后,您可以通过 data.returnValue
访问该值。
此外,请注意,您可以使用以下命令查看变量 data
中的内容: console.log(JSON.stringify(data));
data
将在调试终端中打印。如果您希望查看包含 data
值的警报,请使用以下命令 alert(JSON.stringify(data));
。
在服务器端函数中,应使用以下过程返回 true
或 false
:
funtion yourfunction() {
....
$data = array( 'returnValue' => 'true');
echo json_encode($data);
}
请注意,您使用要返回的数据创建了一个映射,并稍后以 JSON 形式回显。然后,在 success
事件中访问 data
对象时,执行 console.log(JSON.stringify(data));
或 alert(JSON.stringify(data));
关于jquery - 当服务器响应 true 或 false 时如何检查 ajax 是否成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30826190/