Eureka! So I ended up just adding in a second ajax call into the function. For some reason it’s returning successful but not with a 200 response. Anyway, it’s working. If anyone knows why it’s returning an unknown response (besides 200 or 201) please share. Thanks!
function get_posts($params) {
$.ajax({
url: psc.ajax_url,
data: {
action: 'get_subcats',
nonce: psc.nonce,
params: $params
},
type: 'post',
dataType: 'json',
success: function(data, textStatus, XMLHttpRequest) {
if (data.status === 200) {
}
else if (data.status === 201) {
alert('201');
$content.html(data.message);
}
else {
$('#subcategories').empty();
$('#subcategories').append(data.content);
}
},
error: function(MLHttpRequest, textStatus, errorThrown) {
$status.html(textStatus);
}
});
$.ajax({
url: psc.ajax_url,
data: {
action: 'filter_posts',
nonce: psc.nonce,
params: $params
},
type: 'post',
dataType: 'json',
success: function(data, textStatus, XMLHttpRequest) {
if (data.status === 200) {
$('#ajaxPosts').html(data.content);
}
else if (data.status === 201) {
$content.html(data.message);
}
else {
$status.html(data.message);
}
},
error: function(MLHttpRequest, textStatus, errorThrown) {
$status.html(textStatus);
}
});
}
functions.php
function psc_subcategories() {
if( !isset( $_POST['nonce'] ) || !wp_verify_nonce( $_POST['nonce'], 'psc' ) )
die('Permission denied');
$value = intval($_POST['params']['value']);;
ob_start();
$categories= get_categories('child_of=".$value."&hide_empty=1');
foreach ($categories as $cat) {
$option .= '<option value="'.$cat->term_id.'">';
$option .= $cat->cat_name;
$option .= ' ('.$cat->category_count.')';
$option .= '</option>';
}
echo '<option value="-1" selected="selected">Subcategory</option>'.$option;
$response['content'] = ob_get_clean();
die(json_encode($response));
}