如何调用AJAX在WordPress
我的Ajax调用输出总是显示0作为输出不知道为什么如何调用AJAX在WordPress
在functions.php
我有这样的代码
function get_data() {
$abc = '1';
$result = $wpdb->get_results("SELECT * FROM ".$wpdb->options ." WHERE option_name LIKE '_transient_%'");
echo $result; //returning this value but still shows 0
wp_die();
}
add_action('wp_ajax_nopriv_get_data', 'get_data');
add_action('wp_ajax_get_data', 'get_data');
我的Ajax调用是在JavaScript
$('body').on("click", ".re-reset-btn", function(e){
var panel = $('#re-compare-bar');
$.ajax({
type : "GET",
dataType : "json",
url : "/wp-admin/admin-ajax.php",
data : {action: "get_data"},
success: function(response) {
alert("Your vote could not be added");
alert(response);
}
});
$("#re-compare-bar-tabs div").remove();
$('.re-compare-icon-toggle .re-compare-notice').text(0);
});
我做Ajax调用在WordPress不使用插件,但没有得到什么,我passing.Even如果我输出$ ABC它仍然显示为0。
在后端有一个由WordPress的本身定义的全局变量ajaxurl。
这个变量不是由WP在前端创建的。这意味着如果你想在前端使用AJAX调用,那么你必须自己定义这样的变量。
这样做的好方法是使用wp_localize_script。
让我们假设你的AJAX调用都在我的Ajax-的script.js文件,然后添加wp_localize_script这个js文件,像这样:
function my_enqueue() {
wp_enqueue_script('ajax-script', get_template_directory_uri() . '/js/my-ajax-script.js', array('jquery'));
wp_localize_script('ajax-script', 'my_ajax_object', array('ajax_url' => admin_url('admin-ajax.php')));
}
add_action('wp_enqueue_scripts', 'my_enqueue');
本地化您的JS文件后,就可以使用my_ajax_object对象在JS文件:
jQuery.ajax({
type: "post",
dataType: "json",
url: my_ajax_object.ajax_url,
data: formData,
success: function(msg){
console.log(msg);
}
});
使用admin_url('admin-ajax.php');
<script type="text/javascript">
$('body').on("click", ".re-reset-btn", function(e){
var panel = $('#re-compare-bar');
$.ajax({
type : "POST",
dataType : "json",
url : "<?php echo admin_url('admin-ajax.php'); ?>",
data : {action: "get_data"},
success: function(response) {
alert("Your vote could not be added");
alert(response);
}
});
$("#re-compare-bar-tabs div").remove();
$('.re-compare-icon-toggle .re-compare-notice').text(0);
});
</script>
此代码位于JavaScript文件中.......所以它没有运行 – smarttechy
您可以在。 –
如果您在响应得到0 管理-ajax.php,这意味着你的AJAX调用工作正常。 但是,您还没有在函数get_data中将$ wpdb定义为全局变量。 检查你的错误日志,你必须在那里看到错误。 尝试:
function get_data() {
global $wpdb;
$abc = '1';
$result = $wpdb->get_results("SELECT * FROM ".$wpdb->options ." WHERE option_name LIKE '_transient_%'");
echo $result; //returning this value but still shows 0
wp_die();
}
它说my_ajax_object没有定义 – smarttechy
wp_local_script请将此替换为wp_localize_script现在我已经修改了代码 –