代码之家  ›  专栏  ›  技术社区  ›  Code Lover

WordPress AJAX 400提交表单时请求错误

  •  0
  • Code Lover  · 技术社区  · 6 年前

    我在AJAX方面很差,尝试提交表单并将记录插入到自定义表中,但没能让它工作。

    事实上,我尝试过多种方式提交数据,但都没有

    HTML格式

    <form class="addtocartform" id="gsAddToCart" method="POST">
        <label class="gs-label" for="options">Options</label>
        <select class="gs-select-box" id="product_option" name="product_option">
            <option value="0">Somnath</option>
            <option value="1">Dwarka</option>
            <option value="2">Rameshwaram</option>
        </select>
        <label class="gs-label" for="qty">Qty.</label>
        <input class="gs-number" id="qty" min="1" name="qty" step="1" type="number" value="1">
    
            <button class="gs-button order-button add-to-cart-button">
                <i class="fa fa-cart-plus"></i>
                <span class="gs-button-label">Add to Cart</span>
            </button>
    
            <input id="product" name="product" type="hidden" value="160"/>
            <input id="group_id" name="group_id" type="hidden" value="194"/>
        </input>
    </form>
    

    function gs_enqueue_ajax_scripts()
    {
    
        wp_register_script('gs-ajax', GROUP_SHOP_ROOT . 'public/js/add-to-cart-ajax.js', ['jquery'], 1.0, TRUE);
        wp_localize_script('gs-ajax', 'ajax_vars', [
            'ajax_url' => admin_url('admin-ajax.php'),
            'nonce'    => wp_create_nonce('gs_nonce'),
        ]);
        wp_enqueue_script('gs-ajax');
    
    }
    
    add_action('wp_enqueue_scripts', 'gs_enqueue_ajax_scripts');
    

    WordPress挂钩-处理和插入数据

    function gs_add_to_cart_ajax()
    {
    
        check_ajax_referer('gs_nonce', $_POST[ 'nonce' ], FALSE);
    
        // validating stuffs ..
    
        $cart = new Group_Shop_Cart();
        $cart->add_to_cart($_POST[ 'group_id' ], $_POST[ 'product' ], $_POST[ 'qty' ], $_POST[ 'product_option' ]);
    
        wp_die();
    }
    
    add_action('wp_ajax_gs_add_to_cart_ajax', 'gs_add_to_cart_ajax');
    add_action('wp_ajax_nopriv_gs_add_to_cart_ajax', 'gs_add_to_cart_ajax');
    

    (function ($) {
    
        $(document).on("click", ".add-to-cart-button", function () {
    
            let data = JSON.stringify({
                action: 'gs_add_to_cart_ajax',
                group_id: $('#group_id').val(),
                product: $('#product').val(),
                qty: $('#qty').val(),
                product_option: $('#product_option').val(),
            });
    
            $('form.addtocartform').on('submit', function (e) {
                e.preventDefault();
    
                $.ajax({
    
                    method: 'POST',
                    dataType: 'json',
                    nonce: ajax_vars.nonce,
                    url: ajax_vars.ajax_url,
                    data: data,
                    success: function (response) {
                        alert("Success");
                    }
    
                });
            });
    
        });
    
    })(jQuery);
    

    我不知道这段代码中有什么错误,不提交。

    修改后的代码

    $.ajax({
    
        method: 'POST',
        dataType: 'json',
        nonce: ajax_vars.nonce,
        url: ajax_vars.ajax_url,
        data: {
            action: 'gs_add_to_cart_ajax',
            group_id: $('#group_id').val(),
            product: $('#product').val(),
            qty: $('#qty').val(),
            product_option: $('#product_option').val(),
        },
        success: function (response) {
            alert("Success");
        }
    
    }); 
    
    0 回复  |  直到 6 年前