我在选择字段更改后尝试返回一些元数据。但是,我已经对下面的代码进行了几次迭代,如果我只是从php脚本中回显它,它可以正常工作,但是当我尝试将其作为响应返回时,它会失败。我知道它肯定在运行这个功能,因为如果我只是告诉它'echo'xxxx',它就可以了。下面是我试图实现的代码。我完全难过,希望我只是忽略了一些事情......
add_action('admin_footer', 'get_criteria_javascript');
function get_criteria_javascript() {
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
if(jQuery('select#pages').length > 0) {
jQuery('select#pages').live('change', function() {
var selected = jQuery(this).val();
var data = { action: 'get_criteria', post_id: selected };
jQuery.ajax({
type: 'post',
dataType: 'html',
url: 'admin-ajax.php',
data: {action: 'get_criteria', post_id : selected },
success: function(response) {
alert(response);
}
});
});
}
});
</script>
<?php
}
add_action('wp_ajax_get_criteria', 'get_criteria_callback');
// if I use echo get_criteria_callback(627); here, it returns the expected results...
function get_criteria_callback($post_id) {
$meta = get_post_meta($post_id, 'criteria');
$content = implode(', ', $meta[0]);
/* This is one version. Although I can echo it fine, if I return this as a response, it tells me my implode is using invalid arguments */
echo $content;
die();
}
答案 0 :(得分:0)
在你的ajax调用中,url参数不应该是硬编码的,而是使用ajaxurl
。 ajax调用是一个新的http请求。因此,您发送的数据将通过POST方法传递。
function get_get_criteria_callback(){
$post_id = isset( $_POST['post_id'] ) ? $_POST['post_id'] : false;
if( $post_id ){
$meta = get_post_meta($post_id, 'criteria');
$content = implode( ', ', $meta[0] );
}
echo $content;
die();
}
希望它有所帮助!