First things first
You have a few errors in your code.
- The table for terms is called
wp_terms
instead ofwp-terms
- The query
$qry
is not correct, the inner query has an invalidWHERE
-clause:SELECT term_id as term_id FROM wp_term_taxanomy = 'category'
should beSELECT term_id as term_id FROM wp_term_taxanomy WHERE taxonomy = 'category'
- Improvement: Use the
$wpdb->prefix
instead of the staticwp_
(not all WordPress installations usewp_
- You register your
AJAX
function in a template, instead of yourfunctions.php
Cleaned up
You could use a Code like this:
Your Template File
<?php
get_header();
global $wpdb;
$qry = "select * from {$wpdb->prefix}terms where term_id IN ( SELECT term_id as term_id FROM {$wpdb->prefix}term_taxanomy WHERE taxonomy = 'category' )";
$data = $wpdb->get_results( $qry );
foreach( $data as $term ) {
?>
<div class="checkbox" id="checkpadding">
<label>
<input type="checkbox" class="catclass" value="<?php echo $term->term_id; ?>">
<span id="checktext"><?php echo $term->name; ?></span>
</label>
</div>
<?php
}
<script>
jQuery(document).ready(function() {
jQuery('.catclass').change(function () {
if (this.checked) {
var catid = ((this.value));
var ajaxurl="<?php echo admin_url("admin-ajax.php'); ?>';
jQuery.ajax({
url: ajaxurl,
data: {
'action': 'getpost',
'catid': catid
},
success: function (data) {
alert(data);
if(data.type == "success") {
alert("success");
}
else {
alert("AJAX error")
}
},
error: function (errorThrown) {
console.log(errorThrown);
}
});
}
});
});
</script>
<?php
get_footer();
?>
Your functions.php
You add the rest to your functions.php:
<?php
add_action('wp_ajax_getpost','getpost');
add_action('wp_ajax_nopriv_getpost', 'getpost');
function getpost() {
echo "hi";
die();
}
?>
You should be fine in this case.
Debugging
Consider firing your AJAX
call without the variable from the select, to ensure it is registered properly.
Afterwards, create an $array
for your response, which you send back to the browser using wp_send_json()
, so you can handle your values like data.type
etc. in your script.