如何将ajax值传递给控制器

How to pass ajax value to controller

提问人:Sequoia 提问时间:10/3/2023 更新时间:10/3/2023 访问量:50

问:

我有一个位于 foreach 内部的表单,我想将 data-order-id=“{{ $user->order_id }}” 传递给控制器。我的问题是data-order-id的值在console.log中显示得很好,但是在调用变量时它在控制器中为null。

刀片.php:

<form action="{{ route('seller_order_all') }}" id="getID" method="post">
        @csrf
        
    <div class="col d-flex flex-column toggle-action" id="{{ $user->order_id }}-{{ $user->product_name }}-{{ $user->status }}" style="position: relative; border: 0.5px solid #8D8D8D; padding-left: 5px; margin-top: 8px; margin-left: -92px; width: 124.075px; background: #ffffff;">
        @if ($user->status == 'To Pay')
            <button class="btn to-pay-button" name="OrderStatus" value="To Pay" type="submit" data-order-id="{{ $user->order_id }}" style="padding: 0px; text-align: left; padding-bottom: 0px; font-size: 15px;">To Ship</button>
                                                            
        @endif
        @if ($user->status == 'To Ship')
            <button  utton class="btn to-pay-button" name="OrderStatus" value="To Ship" type="submit" data-order-id="{{ $user->order_id }}" style="padding: 0px; text-align: left; padding-bottom: 0px; font-size: 15px;">Shipping</button>
    
        @endif
        @if ($user->status == 'Shipping')
            <button class="btn to-pay-button" type="submit" name="OrderStatus" value="Completed" data-order-id="{{ $user->order_id }}"  style="padding: 0px; text-align: left; padding-bottom: 0px; font-size: 15px;">Completed</button>
            <button class="btn to-pay-button" type="submit" name="OrderStatus" value="Failed Delivery" data-order-id="{{ $user->order_id }}" style="padding: 0px; text-align: left; padding-bottom: 0px; font-size: 15px;">Failed Delivery</button>
        @endif   
    </div>
</form>

JS/AJAX:

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>  
    <script>
        $('.to-pay-button').click(function(event) {
        
        // Get the order_id from the data-order-id attribute of the clicked button
        var orderId = $(this).data('order-id');
        console.log("orderId: " + orderId);
        
        // Send the orderId to the server using an AJAX request
        $.ajax({
            type: 'POST',
            url: '{{ route('seller_order_all') }}',
            data: {
                _token: '{{ csrf_token() }}',
                order_id: orderId,
            },
            success: function(response) {
                // Handle the response here
                console.log(response);
                
         
            },
            error: function(error) {
                // Handle any errors that occur during the AJAX request
                console.error(error);
            }
        });
    });

    </script>

控制器: 我有(请求$request)和::match(['post','get'])。

$getOrder是有价值的。 $orderId为 null。

if($request->isMethod('post')){
            $getOrder = $request->input('OrderStatus');
            $orderId = $request->input('order_id');            

            dd($getOrder, $orderId);
            

        }
阿贾克斯 ·拉拉维尔

评论

0赞 Hasan Çetin 10/3/2023
您提交了两次。你的表单提交功能,因为你不能接受order_id,如果你制作按钮类型按钮,你可以用javascript提交,你会看到order_id
0赞 Sequoia 10/3/2023
它奏效了,谢谢!我还有一个问题,我可以在不刷新页面的情况下实时查看结果吗?
0赞 brombeer 10/3/2023
仅供参考,如果该表单在循环中,您将获得多个 - 这是无效的,s 必须是唯一的id="getID"id
0赞 Sequoia 10/3/2023
谢谢你的信息!我只是设置了一个 ID,这样我就可以手动提交 JavaScript。
0赞 Hasan Çetin 10/3/2023
如果发送 return response()->json([“data” => “your_data_here”]);之后,你可以从成功 response.data 中获取它

答: 暂无答案