我的服务器响应为true
或false
。我一直试图找出如何使用以下脚本检查success
返回的值是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;
}
}
}
答案 0 :(得分:2)
请注意,在success
事件中,data
参数通常以JSON格式表示请求响应中的元素。因此,在响应中,使用带有returnValue
或true
值的false
参数设置JSON对象。然后,您可以通过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);
}
注意您创建了一个包含要返回的数据的Map,然后以JSON形式回显。然后,在访问data
事件中的success
对象时,请执行console.log(JSON.stringify(data));
或alert(JSON.stringify(data));
答案 1 :(得分:1)
您的dataType
请求中缺少AJAX
属性。包括它
$.ajax({
type: $form.attr('method'),
url: $form.attr('action'),
data: $form.serialize(),
dataType : 'html', //set the dataType attribute
cache: false,
success: function(data) {
console.log(data); //Try to log the data and check the response
if (data == true) {
alert('success : user logged in');
} else {
alert('Erreur login');
}
},
error: function(){
alert("failure");
}
});
然后尝试在console.log(data)
函数中success
查看您从服务器接收到的确切内容。