jquery - 当服务器响应 true 或 false 时如何检查 ajax 是否成功?

标签 jquery ajax

我的服务器响应为 truefalse。我一直在尝试弄清楚如何使用以下脚本检查成功返回值是否为truefalse:

$('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 对象,该参数的值为 truefalse。然后,您可以通过 data.returnValue 访问该值。

此外,请注意,您可以使用以下命令查看变量 data 中的内容: console.log(JSON.stringify(data)); data 将在调试终端中打印。如果您希望查看包含 data 值的警报,请使用以下命令 alert(JSON.stringify(data));

在服务器端函数中,应使用以下过程返回 truefalse:

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/

相关文章:

javascript - 是否可以在它之外使用ajax响应?

javascript - 使用 ajax 和 PHP 裁剪后将图像保存到 MySQL

javascript - php 使用 ajax 或 javascript 处理上传

javascript (jquery) - 代码应该位于 -> onload 或 document.ready 或 pageLoad()?

jquery - 通过 jquery Submit() 提交表单后 Laravel 文件验证;

javascript - 如何实现拖动以更改相对定位元素的顺序?

javascript - Revolution Slider - 有独立的编辑器吗?

jquery - 使用 jquery .load 获取内容时覆盖 <a href ="">

javascript - 使用jquery和ajax从html字符串中的div获取值

jquery - 使用ajax mvc更新数据时如何更新表中的行