Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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
Php 用wordpress处理ajax请求响应_Php_Javascript_Wordpress_Request - Fatal编程技术网

Php 用wordpress处理ajax请求响应

Php 用wordpress处理ajax请求响应,php,javascript,wordpress,request,Php,Javascript,Wordpress,Request,我在wordpress插件中完成了一个ajax请求。我的请求基于以下步骤: 1)我正在包括js文件并在ready上启动请求文档 2)在php端,我想接受这个请求并将其打印出来进行测试。 对于所有这些东西,我写了以下代码: main.js: $(function(){ $.post('/wp-content/plugins/dsn/functions.php',{token:"1tibu4"},function(data) { console.log(data);

我在wordpress插件中完成了一个ajax请求。我的请求基于以下步骤:

1)我正在包括js文件并在ready上启动请求文档

2)在php端,我想接受这个请求并将其打印出来进行测试。

对于所有这些东西,我写了以下代码:

main.js:

 $(function(){      
    $.post('/wp-content/plugins/dsn/functions.php',{token:"1tibu4"},function(data) {
      console.log(data);
    },"json");
 });
functions.php:

 <?php 

   add_action('loop_end', 'init');

   function init(){
       global $_POST;

       $post= $_POST;   
       echo json_encode($post);Exit;

   }

WordPress有一种处理AJAX的独特方式。如果您直接向php文件发出请求,那么您就不会加载WordPress框架的其余部分,很多WordPress特定的功能将不可用

在PHP端,您必须使用如下代码:

//for logged in users
add_action('wp_ajax_my_action', 'my_action_callback');
//for not logged in users
add_action('wp_ajax_nopriv_my_action', 'my_action_callback');

function my_action_callback() {
  //your function here
  exit; //always call exit at the end of a WordPress ajax function
}
在JS端,您需要将请求发送到一个名为“wp admin/admin ajax.php”的文件

因此,您的请求如下所示(使用jQuery):


请注意my_action_回调部分。

WordPress有一种处理AJAX的独特方法。如果您直接向php文件发出请求,那么您就不会加载WordPress框架的其余部分,很多WordPress特定的功能将不可用

在PHP端,您必须使用如下代码:

//for logged in users
add_action('wp_ajax_my_action', 'my_action_callback');
//for not logged in users
add_action('wp_ajax_nopriv_my_action', 'my_action_callback');

function my_action_callback() {
  //your function here
  exit; //always call exit at the end of a WordPress ajax function
}
在JS端,您需要将请求发送到一个名为“wp admin/admin ajax.php”的文件

因此,您的请求如下所示(使用jQuery):


请注意my_action_回调部分。

请确保已按如下方式将自定义脚本排入队列。如果在自定义注入Wordpress jQuery脚本之前包含脚本,则代码可能无法正常工作

function my_scripts_method() {
    wp_enqueue_script(
        'custom-script',
        get_template_directory_uri() . '/js/main.js',
        array('jquery')
    );
}
add_action('wp_enqueue_scripts', 'my_scripts_method');

确保已按如下方式将自定义脚本排入队列。如果在自定义注入Wordpress jQuery脚本之前包含脚本,则代码可能无法正常工作

function my_scripts_method() {
    wp_enqueue_script(
        'custom-script',
        get_template_directory_uri() . '/js/main.js',
        array('jquery')
    );
}
add_action('wp_enqueue_scripts', 'my_scripts_method');

你有问题吗?你是说代码没有达到你期望的效果吗?对不起,我编辑了我的问题检查你的PHP错误日志,有没有错误?控制台说响应代码是什么?200, 500, 404? 这是回应的屏幕截图。我猜它成功返回了200。你有问题吗?你是说代码没有达到你期望的效果吗?对不起,我编辑了我的问题检查你的PHP错误日志,有没有错误?控制台说响应代码是什么?200, 500, 404? 这是响应的屏幕截图。我想它成功地返回了200。谢谢你的回复,我尝试了你的方式,但是当页面加载没有ajax请求时,如果没有发送ajax请求,那是因为你没有发送它。这与我提供的答案没有任何关系。我不认为上面的代码是正确的,但这个想法是完全正确的,谢谢亚当。有关当前的说明,请参阅。请更改此操作现在不起作用。添加操作(“wp\u ajax\u nopriv\u my\u action”、“my\u action\u callback”);感谢您的回复,我尝试了您的方式,但是当页面没有加载ajax请求时,如果没有发送ajax请求,那是因为您没有发送它。这与我提供的答案没有任何关系。我不认为上面的代码是正确的,但这个想法是完全正确的,谢谢亚当。有关当前的说明,请参阅。请更改此操作现在不起作用。添加操作(“wp\u ajax\u nopriv\u my\u action”、“my\u action\u callback”);