Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.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
在wordpress插件开发中使用ajax将Javascript数据转换为PHP_Php_Jquery_Ajax_Wordpress_Wordpress Plugin Creation - Fatal编程技术网

在wordpress插件开发中使用ajax将Javascript数据转换为PHP

在wordpress插件开发中使用ajax将Javascript数据转换为PHP,php,jquery,ajax,wordpress,wordpress-plugin-creation,Php,Jquery,Ajax,Wordpress,Wordpress Plugin Creation,我正在构建我的第一个wordpress插件,在将Javascript对象数组转换为PHP时遇到了问题,因此我无法使用这些数据在wp admin用户区域中创建单独的表 在我实际包含对象之前,我想我应该试着只使用一个变量 首先,我在wp_localize_脚本中包含了wp admin/admin-ajax.php url,以便在Javascript文件中使用 function addition_js_script() { wp_enqueue_script( 'dyn

我正在构建我的第一个wordpress插件,在将Javascript对象数组转换为PHP时遇到了问题,因此我无法使用这些数据在wp admin用户区域中创建单独的表

在我实际包含对象之前,我想我应该试着只使用一个变量

首先,我在wp_localize_脚本中包含了wp admin/admin-ajax.php url,以便在Javascript文件中使用

function addition_js_script() {
   
    wp_enqueue_script(
        'dynamic-maths-addition-js',
        DYNAMIC_MATHS_URL . 'includes/shortcodes/addition/addition.js',
        ['jquery'],
        time(),
        true 
    );

    wp_localize_script( 'dynamic-maths-addition-js', 'php_data', array(
        'user_addition_skill' => get_user_meta( wp_get_current_user()->ID, 'addition-skill-level', true ),
        'ajaxurl' => admin_url( 'admin-ajax.php' )
    ));

}

if (shortcode_exists( 'addition_quiz' ) ){
    add_action( 'wp_enqueue_scripts', 'addition_js_script', 100 );
    add_action( 'wp_enqueue_scripts', 'addition_css_script', 100 );
}
然后,在addition.js中:

jQuery(document).ready(function($){
  let numTest = '75';

jQuery.ajax({
  url: php_data.ajaxurl,
  data: {
    'action': 'php_test',
    'php_test': numTest
  },
  success: function(data){
    console.log('happy');
  }
});

});
然后在my backend menu.php文件中:

function retrieve_test_number(){
    if (isset($_REQUEST)){
        
         $num = $_REQUEST['php_test'];

        echo 'This is our JS variable: ' . $num;
    }
    die();
}

add_action('wp_ajax_php_test_num', 'retrieve_test_number');
像这样,它显示“this is our JS variable:”但不显示数字

即使我尝试用变量$num返回这个函数,并尝试在页面下方的标记中回显它,我也无法显示该变量。请原谅我的无知,我的php技能非常糟糕。

更改
add_action('wp_ajax_php_test_num','retrieve_test_number')
添加动作('wp_ajax_php_test','retrieve_test_number')。检查下面的代码

HTML

PHP

测试和工作


好的,但是如何在html段落中使用$num变量?我尝试将其保存到变量或在函数中使用return,但它仍然无法打印$numIt的值,仍然无法工作。前端和wp admin出现了一些问题。当我在wp admin中时,console.log('happy')不会显示,只有当我在站点的主页上时才会显示。因为您使用的
wp\u enqueue\u脚本
仅适用于前端。你需要使用
admin\u enqueue\u脚本
来管理我得到了400个响应。我真的搞不清楚我做错了什么让我们来吧。
<p id="num"></p>
jQuery(document).ready(function($){
    let numTest = '75';
    jQuery.ajax({
        url: php_data.ajaxurl,
        data: {
            'action': 'php_test',
            'php_test': numTest
        },
        success: function(data){
            console.log('happy');
            $('#num').html(data);
        }
    });
});
        
function retrieve_test_number(){
    if (isset($_REQUEST)){
        $num = $_REQUEST['php_test'];
        echo 'This is our JS variable: ' . $num;
    }
    die();
}
add_action('wp_ajax_php_test', 'retrieve_test_number');
add_action( 'wp_ajax_nopriv_php_test', 'retrieve_test_number' );