在 wordpress 插件开发中使用 ajax 将 Javascript 数据转换为 PHP
Converting Javascript data to PHP using ajax in wordpress plugin development
我正在构建我的第一个 wordpress 插件,但我在将 Javascript 对象数组转换为 PHP 时遇到问题,因此我可以使用这些数据在 wp-admin 中创建单独的表用户区.
在我实际包含该对象之前,我想我会尝试只使用一个变量。
首先,我将 wp-admin/admin-ajax.php url 包含在 wp_localize_script 中,以便在我的 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');
}
});
});
然后在我的后端 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 尝试 return 这个函数,并且我尝试在页面下方的
标记中回显它,我也无法将变量获取到展示。原谅我的无知,我的php技术很烂
将 add_action('wp_ajax_php_test_num', 'retrieve_test_number');
更改为 add_action('wp_ajax_php_test', 'retrieve_test_number');
。检查下面的代码。
HTML
<p id="num"></p>
Javascript
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);
}
});
});
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', 'retrieve_test_number');
add_action( 'wp_ajax_nopriv_php_test', 'retrieve_test_number' );
已测试并有效。
我正在构建我的第一个 wordpress 插件,但我在将 Javascript 对象数组转换为 PHP 时遇到问题,因此我可以使用这些数据在 wp-admin 中创建单独的表用户区.
在我实际包含该对象之前,我想我会尝试只使用一个变量。
首先,我将 wp-admin/admin-ajax.php url 包含在 wp_localize_script 中,以便在我的 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');
}
});
});
然后在我的后端 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 尝试 return 这个函数,并且我尝试在页面下方的
标记中回显它,我也无法将变量获取到展示。原谅我的无知,我的php技术很烂
将 add_action('wp_ajax_php_test_num', 'retrieve_test_number');
更改为 add_action('wp_ajax_php_test', 'retrieve_test_number');
。检查下面的代码。
HTML
<p id="num"></p>
Javascript
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);
}
});
});
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', 'retrieve_test_number');
add_action( 'wp_ajax_nopriv_php_test', 'retrieve_test_number' );
已测试并有效。