它有点奇怪,我需要一些关于WP_query()的问题的帮助或解释;
当您到达特定页面时,我的代码会使用元查询获取所有帖子类型的项目:
echo 'apple';
$args = array(
'post_type' => "family",
'meta_query' => array(
array('key' => '_family')
),
'posts_per_page'=>'9000' // number post in this post type: 18 000 entries
);
$my_query = new WP_Query($args);
echo 'banana';
如果我在页面加载时使用..是好的..我看到我的"香蕉"回声。
如果我在" ajax"中执行此操作,则返回值为" null"而且我没有看到我的"香蕉"但我看到" apple"
我已经尝试过posts_per_page =>' 3'它在ajax中运行良好。
试验:
posts_per_page=>'3' [OK]
posts_per_page=>'-1' [FAILED]
posts_per_page=>'2000' [FAILED]
另外,我们在php.ini上有4Go for memory_limit。
如果我运行In" safe_mode On"一切都好。
有什么想法吗?
谢谢你!修改
$('body.woocommerce-account #famille-list a').on('click',function (e){
if($(this).data('action') == "edit"){
e.preventDefault();
showProgress();
jQuery.ajax({
type: "post",
dataType: "json",
async: true,
url: scriptParams.ajaxurl,
data: {
action: "edit_family",
id: $(this).data('id')
},
success: function(data) {
if(data != null && data.success == 1){
if($('form.myfamily').css('display')=='none'){
$('form.myfamily').prev().find('h3').click();
}
$('input[name=save_children]').val('Modifier');
$('input[name=id]').val(data.member.id);
hideProgress();
}
}
});
}
});
答案 0 :(得分:0)
对于AJAX,请求您应该只使用echo
传递一个json_encode
语句,然后使用die()
语句。如果这不能解决您的错误,那至少是一种很好的做法,因为它可以明确您的HTTP响应。
header( "Content-Type: application/json" );
echo json_encode('apple');
die();
// Code should not reach your banana statement
因此,对于您的代码,您应该这样做:
$response = array();
$response[] = 'apple';
$args = array(
'post_type' => "family",
'meta_query' => array(
array('key' => '_family')
),
'posts_per_page'=>'9000' // number post in this post type: 18 000 entries
);
$my_query = new WP_Query($args);
$response[] = 'banana';
header( "Content-Type: application/json" );
// will return an array with the value ['apple', 'bannana'];
echo json_encode($response);
die();
另外,你是直接调用PHP文件吗?这是一个WordPress的坏习惯。有一种既定的方法可以处理AJAX请求:http://codex.wordpress.org/AJAX_in_Plugins(它表示它适用于插件,但主题也可以使用它)。一开始有点罗嗦,很难进入,但它更清洁,更灵活。