首页 > 解决方案 > Laravel 中的 AJAX 函数未将表单数据发布到控制器

问题描述

我在 Laravel 有一个表单,用户可以在其中购买产品。我试图在不刷新页面的情况下动态实现这一点。我可以调用 AJAX 函数,但它没有将数据发布到控制器,我需要帮助。控制器中的所有东西都工作得很好,只是数据没有发送给它。

这是HTML表单

<form class="buy-product-form" id="{{$product->id}}" action="/UoE/buy-product/{{$product->id}}" method="POST">
                                    {{csrf_field()}}
                                    <button class="pull-right btn btn-primary">BUY NOW</button>
                                </form>

这是我的 AJAX 函数

$(document).ready(function(){
            $('form.buy-product-form').on('submit', (function (e) {
                e.preventDefault();
                var product_id = $(this).closest("form").attr("id");
                $.ajax({
                    url: $(this).closest("form").attr('action'),
                    type: 'POST',
                    data: {'id': product_id},
                    dataType: 'JSON',
                    success: function () {
                        window.alert(url);
                    }
                });
            }));
        });

这是控制器中的前几行

 public function buyProduct($university_code, $product_id){
        $player = Player::where('user_id', Auth::user()->id)->first();
        $product = Product::where('id', $product_id)->first();
        $totalPrice = $product->quantity_available * $product->price; 

标签: phpjqueryhtmlajaxlaravel

解决方案


我刚刚经历了在 Laravel 中通过 AJAX 发布的令人头疼的问题。我有与你类似的代码,但它不起作用。我所做的一些更改:

<form>标签没有任何动作。

<form id="contact-form" class="main-form">

<button>标签:

<button class="btn btn-primary submit-button" type="button">Submit</button>

AJAX 调用:

$(document).ready(function() 
{
    $(".submit-button").click(function(e){            
        form_data = $("form").serialize()
        $.ajax({
            url: "/contact",
            type: "POST",
            data: form_data,
            success: function(data) 
            {
                if ($.isEmptyObject(data.error))
                {
                    handleSuccess(data.success);
                }
                else
                {
                    handleError(data.error);
                }
            }
        });
    });
});

推荐阅读