用于登录检查的Ajax无法正常工作并提交表单

时间:2016-07-12 11:39:39

标签: javascript php ajax

我知道我的问题有很多答案,但我是ajax和javascript的新手我希望有人指出导致我的脚本失败的问题。
我根据这个答案Check if user logged in on ajax page change使用ajax进行了登录检查。单击提交按钮时,该功能会检查用户是否已登录。如果不是,我想显示警告,如果是,则显示下一页。
我的javascript:

    $('#bookForm').submit(function(){
    $.ajax({
            url : '<?=BASE_URL?>user/logged.php',
            success : function(response){
                if (response.logged == true) {
                    return true;
                }else{
                    alert('you need to log in');
                    //e.preventDefault();
                    return false;
                }
            }
    });
});  

我的php脚本检查用户是否已登录:

$response = array();

if(!isset($_SESSION['userId'])) {

    $response['logged'] = false; 

}else{

    $response['logged'] = true;

}

$response = json_encode($response);

echo($response);

我是javascript / ajax的新手,我不确定问题出在哪里。尽管用户已登录,该函数仍会返回未登录用户的警报。

2 个答案:

答案 0 :(得分:0)

您必须在ajax调用中添加此选项:dataType:'json'

并回显json_encode($ response);没有任何回报。

答案 1 :(得分:0)

在Jquery代码中进行以下更改。

$('#bookForm').submit(function(event){

event.preventdefault();

    $.ajax({

        url : '<?= BASE_URL ?>user/logged.php',
        dataType:'json'
        success : function(response){

            if (response.logged == true) {
                return true;
            } 
            else{
                alert('you need to log in');
                //e.preventDefault();
                return false;
            }
        }
    });
});

从php脚本中删除return json_encode($response);