通过AJAX将第二个WooCommerce产品添加到购物车,并选中复选框

时间:2017-09-04 03:03:03

标签: php jquery ajax wordpress woocommerce

如果勾选了复选框,我没有成功尝试按“添加到购物车”的方式将有条件的第二个产品添加到购物车。

我有一个订单,如果选中复选框,我想在购物车中添加第二个产品。我开始尝试通过会话或cookie添加值。这适用于单个产品页面,但不适用于添加到购物车的短代码[add_to_cart id =“XX”]。我认为AJAX是我最好的机会,但我对AJAX缺乏经验,无法判断它是短代码还是我。

这是我在复选框提交中获取添加到购物车的便宜方式。

输入:

function sample_input(){

        echo '
            <form id="myform" action="">
            Check this box: 
            <input type="checkbox" id="add-to-cart" name="16379" /><input type="submit" value="Submit" /></div></form>
                ';
}

加载脚本:

    function enqueue_scripts_styles_init() {
        wp_enqueue_script( 'ajax-script', plugins_url( '/js/ajax-testing-script.js', __FILE__ ), array('jquery'), 1.0 ); // jQuery will be included automatically
        wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); // setting ajaxurl
    }
    add_action('init', 'enqueue_scripts_styles_init');

JQuery的:

jQuery(function($){

    send_data = function(item) {

        $.post(ajax_object.ajaxurl, {

            dataType: "json",
            data: {'item' : item},
            type: "POST",
            cache: false

        }).done(function(data, status, xml) {

            var obj = jQuery.parseJSON(data);
            alert(obj.success);

        }).fail(function(jqXHR, textStatus, errorThrown) {
        }).always(function() {
        });

    }


    $("#show").click(function() {

        var $check = $('input#item');

        if ($check.is(":checked")) {
            alert("Yes");
            send_data($check.val()); 
        } else {
            alert("box is not checked");
        }


    });


});

这是一个成功的方法,让我将正确的产品添加到购物车,“是”警报以及第二个“未定义”警报。所以我认为AJAX在某个地方被破坏了,因为我得到了“未定义”警报。另外,当我将复选框上的idnamevalue更改为id="item" name="item" value="AddOnProduct"并依靠PHP来发送添加到购物车时,我没有得到任何结果send_data = function(item) {}

如果我将submit按钮更改为do_shortcode('[add_to_cart id="517"]'),我会收到失败的提醒“未选中复选框”,只会将产品ID添加到购物车。所以我认为AJAX没有设置为同时处理添加到购物车功能和我的ajax。最后,这是最终代码应该做的事情:

    echo '
        <form id="myform" action="">
        Check this box: 
        <input type="checkbox" id="item" name="item" value="AddOnProduct" />
<div id="show">' . do_shortcode('[add_to_cart id="517"]') . '</div></form>';

PHP:

    function ajax_action_stuff() {
        if (isset($_REQUEST['item'])) {
            WC()->cart->add_to_cart( 16379 ); //2nd product
        } else {
            return;
        }
    }

    add_action( 'wp_ajax_ajax_action', 'ajax_action_stuff' );
    add_action( 'wp_ajax_nopriv_ajax_action', 'ajax_action_stuff' );

(#show)click()上,如果选中“item”,则ajax应将产品ID发送到购物车并捕获第二个ID以发送到购物车。我想如果我能成功地将值传回PHP,我可以在我的ajax函数中执行命令。它是AJAX还是短代码添加到购物车?

0 个答案:

没有答案