首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的PHP到Ajax‘没有登录’错误-如何?

问简单的PHP到Ajax‘没有登录’错误-如何?
EN

Stack Overflow用户
提问于 2013-11-19 15:27:28
回答 2查看 261关注 0票数 1

目前,我正在使用它将成功或失败发送到ajax:

代码语言:javascript
复制
$response = array( 'success' => true );
wp_send_json_success($response);

但是,假设用户没有登录,我想结束php函数,并发送错误消息,这将提示登录模式弹出。我该怎么做?比如:

代码语言:javascript
复制
if(!is_user_logged_in)) {
wp_send_json_error('not logged in');
die()
}

或者我可以使用更普通的json_encode($response);

代码语言:javascript
复制
if(!is_user_logged_in)) {
echo json_encode($response);
die()
}

但是,这个处理程序如何知道发生了错误呢?如果我将成功和错误的所有选项放入数组中,如何在返回json响应的同时将函数挂掉()?我如何告诉php要发送哪个响应?

一旦它到达我的ajax调用,我相信我能解决它。就像我读到的那样:

代码语言:javascript
复制
var dataArray = jQuery.parseJSON(data);

有些例子会有很大帮助。提前谢谢你!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-19 15:37:21

这应该是可行的:

代码语言:javascript
复制
if(!is_user_logged_in()) {
    $response = array(
               'loggedIn' => false,
               'alertMsg' => 'not logged in :,-(',
    );
} else {
    $response = array(
               'loggedIn' => true,
               'success'  => true,
               'alertMsg' => 'test!',
    );

}
wp_send_json_success($response);
die();

Ajax调用类似于:

代码语言:javascript
复制
jQuery.get('pathToYourJsonFunctionURL', function(data) {
    if (data.loggedIn == true) {
        jQuery('#divForLoggedInStatus').text('You are logged in');
    } else {
        jQuery('#divForLoggedInStatus').text('You are NOT logged in');
    }

    window.alert(data.alertMsg);
});

当您返回JSON数据时,您不使用parseJSON (数据已经被(解析) json)。data.loggedIn与PHP返回的array('loggedIn' => value);相同

票数 1
EN

Stack Overflow用户

发布于 2013-11-19 15:44:59

您可以使用json_encode并制定如下自己的协议:

代码语言:javascript
复制
if(isset($_POST['operation']) && $_POST['operation'] == 'is_user_logged_in'){
    if(!is_user_logged_in()){
        $response->success = false;
        $response->msg = "not logged in";
    }else{
        $response->success = true;
    }
    echo json_encode($response);
    exit;
}

然后在ajax中:

代码语言:javascript
复制
$.post('AJAX-URL-HERE',{"operation":"is_user_logged_in"},function(response){
    if(response.success){
         //do whatever
    }else{
         var message = response.msg
         //pop up the login modal
    }
},'json').error(function(){alert('Call error')});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20075497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档