Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Wordpress无法从ajax请求中获取当前用户id()_Javascript_Php_Jquery_Wordpress - Fatal编程技术网

Javascript Wordpress无法从ajax请求中获取当前用户id()

Javascript Wordpress无法从ajax请求中获取当前用户id(),javascript,php,jquery,wordpress,Javascript,Php,Jquery,Wordpress,我尝试用wordpress做一个ajax请求。因此,我创建了一个简单的js请求: $.ajax({ url: '?', type: 'POST', data: { 'pr_post': post, 'pr_rating': rating }, success: function (response) { console.log(response); } }); 下面是我处理请求的函数 functi

我尝试用wordpress做一个ajax请求。因此,我创建了一个简单的js请求:

$.ajax({
    url: '?',
    type: 'POST',
    data: {
        'pr_post': post,
        'pr_rating': rating
    },
    success: function (response) {
        console.log(response);
     }
});
下面是我处理请求的函数

function pr_request()
{
    if (isset($_REQUEST['pr_post']) && isset($_REQUEST['pr_rating']) && isset($_REQUEST['pr_user'])) {

         $post = $_REQUEST['pr_post'];
         $rating = ($_REQUEST['pr_rating'] > 5 ? 5 : $_REQUEST['pr_rating']);
         $user = get_current_user_id();

         if (!pr_has_user_already_voted($user, $post)) {

             global $wpdb;
             $table = $wpdb->prefix . 'mitmach_ratings';

             $wpdb->query($wpdb->prepare("insert into $table values (null, $post, $rating, '$user');"));
             wp_send_json(['message' => 'success']);

         } else {
             wp_send_json(['message' => 'duplicate'], 403);
         }
    }
 }
如您所见,我调用了
get\u current\u user\u id()
函数。即使用户登录,此函数也始终返回true。如何在不通过ajax发送的情况下在处理程序中获取用户id

对于开始检查文档-

您需要发送
操作

注意上面JavaScript中定义的'action'键的值'my_action'与下面ajax处理程序中的'wp_ajax_my_action'的后半部分是如何匹配的。这是因为它用于通过admin-ajax.PHP调用服务器端PHP函数。如果未指定操作,admin-ajax.php将退出,并在过程中返回0

这样称呼:

add_action( 'wp_ajax_pr_request', 'pr_request' );
add_action( 'wp_ajax_nopriv_pr_request', 'pr_request' );

function pr_request() {
  // Code
}

我已经将
add_action
功能添加到我的插件注册表中。现在,我得到了页面内容,而不是用
wp\u send\u json
定义的json结果。pr_request函数的逻辑也不会被执行。您能给我们看一下
pr_request()
函数代码吗?
$\u request['pr_post']
现在不存在,但是这个if语句是不必要的。除非通过带有动作请求的ajax请求,否则无法调用此函数。哦,是的。我的错误。对不起,谢谢你。现在它起作用了:)
add_action( 'wp_ajax_pr_request', 'pr_request' );
add_action( 'wp_ajax_nopriv_pr_request', 'pr_request' );

function pr_request() {
  // Code
}