mercredi 27 janvier 2016

WP Ajax not working in else condition

I am working on WordPress plugin. In plugin there is a check box, when a user checked the checkbox a value will be saved in database via ajax and when its unchecked the value will be deleted from database via ajax. So I create a checkbox and write an ajax code.

Here is my code:

HTML Code

<label class="label" for="purchase">
     <?php _e('Purchase', 'product'); ?>
     <input type="checkbox" id="purchase" />
</label>

<input type="hidden" class="cart_info" value='product id'>

Here is my Ajax and PHP Code:

add_action('wp_ajax_values_save', 'save_check_value');
add_action('wp_ajax_nopriv_values_save', 'save_check_value');
add_action('wp_ajax_values_delete', 'delete_check_value');
add_action('wp_ajax_nopriv_email_values_delete', 'delete_check_value');

add_action("wp_head", "edd_gift_email_ajax");
function edd_gift_email_ajax() {
    ?>
    <script type="text/javascript">
        jQuery(document).ready(function () {
            jQuery("#purchase").click(function () {
                if(jQuery(this).is(":checked")) {
                    var cart_info_save = jQuery('.cart_info').val();

                    var data_save = {
                        action: 'values_save',
                        cart_info_save: cart_info_save
                    }

                    jQuery.post('<?php echo admin_url('admin-ajax.php'); ?>', data_save, function (save_result) {
                        alert(save_result);
                    });
                } else {
                    var cart_info_delete = jQuery('.cart_info').val();

                    var data_delete = {
                        action: 'values_delete',
                        cart_info_delete: cart_info_delete
                    }

                    jQuery.post('<?php echo admin_url('admin-ajax.php'); ?>', data_delete, function (delete_result) {
                        alert(delete_result);
                    });
                }
            });
        });
    </script>
    <?php
}

And here is my save and delete query

function save_check_value() {
    global $wpdb;

    $info_save = stripcslashes($_REQUEST['cart_info_save']);

    $cart_info_un_sr_save = unserialize($info_save);

    foreach ($cart_info_un_sr_save as $user_gift_cart_save) {
        $prod_user_id_save = $user_cart_save['prod_id'];

        echo $prod_user_id_save . " _ Add This";

        //update_post_meta($prod_user_id_save, 'this_product', '1');
    }
}

function delete_check_value() {
    global $wpdb;

    $info_delete = stripcslashes($_REQUEST['cart_info_delete']);

    $cart_info_un_sr_delete = unserialize($info_delete);
    n
    foreach ($cart_info_un_sr_delete as $user_cart_delete) {
        $prod_user_id_delete = $user_cart_delete['prod_id'];

        echo $edd_gift_prod_user_id_delete . " _ Delete This";

        //delete_post_meta($prod_user_id_delete, 'this_product', '1');
    }
}

So when I checked the check box the alert gives me this value 168 _ Add This (this is what I want) but when I unchecked the check box the alert gives me this value 0 (I want this value 168 _ Delete This).

I checked every thing but I got confused that why else condition not give me the right value.

Any suggestions.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire