现在,我正试图在用户点击作者姓名时使用AJAX检索自定义作者元。
发生的事情是我的AJAX没有返回任何内容。
我已经测试了我正在发送的变量,并且填写正确,但我没有得到Wordpress的任何响应。
任何帮助都将不胜感激。
要注意,PHP位于我的functions.php
文件中,其中有另一个函数可以创建并保存我需要访问的信息来自
谢谢,
亨特
PHP
add_action('wp_ajax_nopriv_ajax_request', 'student_meta_info');
add_action('wp_ajax_ajax_request', 'student_meta_info');
function get_student_meta_info()
{
$studentID = $_POST['studentID'];
$review = the_author_meta('review', $id);
$weightloss = the_author_meta('weightloss', $id);
$gained = the_author_meta('gained', $id);
$AuthMeta = array("review" => $review, "weightloss" => $weightloss, "gained" => $gained);
echo json_encode($AuthMeta);
exit;
}
的jQuery
$(document).ready(function()
{
$('.author').click(function()
{
var id = $(this).attr('id');
$.ajax({
type: 'POST',
action: 'student_meta_info',
studentID: id,
dataType: 'json',
success: function(data)
{
var review = data.review;
var weightloss = data.weightloss;
var gained = data.gained;
alert(data);
alert(review);
alert(weightloss);
alert(gained);
}
});
});
});
答案 0 :(得分:3)
您需要在dataType
之后指定WordPress AJAX网址:
url: ajax_object.ajax_url,
要将网址设为var,您必须localize your script,例如:
add_action( 'wp_enqueue_scripts', 'so16523111_wp_enqueue_scripts' );
function so16523111_wp_enqueue_scripts() {
wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/js/my_script.js', array( 'jquery' ), '20130513', true );
// in javascript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value
wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}
另外,将数据包装为数据参数...
data: {action:'student_meta_info',studentID:id},
...并使用response
检查是否成功:
success: function(response)
此外,您需要调整回调,并使用ajax挂钩来反映操作:
add_action( 'wp_ajax_nopriv_student_meta_info', 'get_student_meta_info' );
add_action( 'wp_ajax_ajax_student_meta_info', 'get_student_meta_info' );
最后,你必须在noconflict模式下使用jQuery:
jQuery(document).ready(function($)
答案 1 :(得分:0)
在functions.php文件中,您没有将钩子附加到右侧函数(get_student_meta_info
,而不是student_meta_info
):
add_action( 'wp_ajax_nopriv_ajax_request', 'get_student_meta_info' );
add_action( 'wp_ajax_ajax_request', 'get_student_meta_info' );
在JavaScript代码(AJAX调用)中:
var data_to_send: {
action: 'ajax_request', // This is how you call it in the add_action hooks
studentID: id,
...
}
$.ajax({
data: data_to_sent,
success: function(r) { ... }
});
希望它有所帮助。