Wordpress:使用OnClick()和Ajax从复选框启动php函数

时间:2014-12-08 19:36:16

标签: javascript php jquery ajax wordpress

我试图在复选框中使用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()函数。

我知道我错过了一些简单的东西,我只是想不出来。

提前致谢。

0 个答案:

没有答案
相关问题