当用户从下拉列表中选择主要类别时,我正在使用WordPress检索子类别。 所有工作都是使用ajax完成的。但问题是,如果我提到dataType到json没有任何回报,如果不是它按预期工作,我知道我收到有效的Json。
这是jQuery代码:
jQuery(document).ready(function($) {
var select = $('#main_cat');
select.on('change', function(){
var temp = $('#main_cat option:selected').text();
console.log(temp);
var data = {
action: 'my_action',
security: '<?php echo $ajax_nonce; ?>',
cat: temp
};
$.ajax({
url: ajaxurl,
data: data,
type: 'post',
success: function(response){
console.log(response);
}
});
});
});
这是我收到的回应。它似乎是数组,但当我使用typeOf(响应)时,它显示字符串。我也尝试过instanceofArray和同样的事情。
这里的确切响应代码:如果我使用json_encode这是我收到的,但jquery仍然认为它是字符串。
[" <option>Auto mobile<\/option>"," <option>Shopping<\/option>"]
这就是我用json_encode
收到的内容Array
(
[0] => <option>Auto mobile</option>
[1] => <option>Shopping</option>
)
这是PHP代码。
add_action( 'wp_ajax_my_action', 'my_action_callback' );
function my_action_callback() {
check_ajax_referer( 'my-special-string', 'security' );
$args = array(
'child_of' => get_cat_ID($_POST['cat']),
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 1,
'hierarchical' => 1,
);
$temp = array();
foreach (get_categories($args) as $cat) {
$temp[] = " <option>$cat->cat_name</option>";
}
print_r($temp);
}
答案 0 :(得分:1)
该回复不是JSON
。看起来像PHP print_r
,使用
echo json_serialize($output);
$output
是您使用print_r
的变量。
答案 1 :(得分:0)
我相信您在后端PHP代码中使用print_r()
:
在datatype
中使用ajax
时请在后端尝试此操作:
echo json_encode($output_array);