我试图在复选框中使用onclick()函数和Ajax来编写插入或更新数据库中的记录。
onclick()函数正确调用javascript代码,但Ajax调用从不调用PHP函数来保存数据。
以下是代码:
PHP:
这是复选框的代码:
<input type="checkbox" id="completed-'.$c.'" value = "' .$c. '" ' .$vcl_compcheck. ' ' .$vcl_compdisable. ' onclick="frontend_checklist_checkbox_changed(' .$c. ')">
以下是PHP代码的其余部分:
add_action('wp_ajax_fc_checkbox_changed', array('Frontend_Checklist', 'changedAjax'));
public static function add_js() {
wp_enqueue_script('frontend-checklist', plugins_url('frontend-checklist.js', __FILE__), array('jquery'));
wp_localize_script( 'frontend-checklist', 'frontendChecklist',
array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
)
);
}
public static function changedAjax() {
$user_ID = get_current_user_id();
if ($user_ID == 0) die;
$ca = (int)$_POST('fc_itemID');
$fc_completed = "on";
$casql = $wpdb->prepare('SELECT completed from wp_fc_vendorlist WHERE fc_vendorID = ' .$user_ID. ' and fc_itemID = ' .$ca. ' ORDER BY fc_itemID ASC' );
$cachk = $wpdb->get_row($vsql, ARRAY_A);
$table_name = 'wp_fc_vendorlist';
if($cachk =='') {
$wpdb->query("INSERT INTO $table_name (fc_itemID, fc_vendorID, completed) VALUES ('$ca', '$user_ID', '$fc_completed')" );
} else {
$wpdb->query($wpdb->prepare("UPDATE $table_name SET completed= $fc_completed WHERE fc_vendorID=$userid and vc_itemID = $ca"));
}
output();
die;
}
最后,这是javascript代码:
function frontend_checklist_checkbox_changed(fc_listID) {
var checkbox;
var fc_listID;
checkbox = jQuery('#completed-' + fc_listID);
if (checkbox && checkbox.prop('checked')) {
var data = { action: 'fc_checkbox_changed', fc_listID: fc_listID};
jQuery.post(frontendChecklist.ajaxurl, data);
alert("The javascript funciton has been initiated ");
}
}
警告框在javascript代码中触发,所以我知道它已经达到了这一点,但它永远不会超出调用PHP中的changedAjax()函数。
我知道我错过了一些简单的东西,我只是想不出来。
提前致谢。