如何在wordpress中调用ajax
我的ajax调用输出始终显示为0,因为输出不知道原因
在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); });
我正在使用wordpress进行ajax调用而不使用插件,但没有得到我正在传递的东西。即使我输出$ abc仍然显示0。
在后端,有一个由WordPress本身定义的全局ajaxurl变量。
WP中的前端不会创建此变量。 这意味着如果你想在前端使用AJAX调用,那么你必须自己定义这样的变量。
这样做的好方法是使用wp_localize_script。
假设你的AJAX调用在my-ajax-script.js文件中,然后为这个JS文件添加wp_localize_script,如下所示:
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文件后,可以在JS文件中使用my_ajax_object对象:
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');
添加admin-ajax.php admin_url('admin-ajax.php');
如果您在响应中得到0,则表示您的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(); }