Laravel通过ajax发送1-2-3等数据,并得到Missing参数错误


Laravel send data such as 1-2-3 by ajax and get Missing argument error

我尝试使用下面的ajax将数据(如1-2-3-4-5)发送到控制器操作,但我得到了错误:

Ajax:

$.ajax({
    type: "GET",
    url: " {{ url('changeMenuItemOrders') }}",
    data: {orders: "1-2-3"},
    success: function (data) {
    }
});

路线:

Route::get('changeMenuItemOrders','SystemController@changeMenuItemOrders');

changeMenuItemOrders动作:

public function changeMenuItemOrders($orders)
{
    dd($orders);
}

Firebug:

http://localhost/sample/public/changeMenuItemOrders?orders=1-2-3 500 Internal Server Error

Laravel错误:

ErrorException in SystemController.php line 114: Missing argument 1 for App'Http'Controllers'SystemController::changeMenuItemOrders()

尝试

public function changeMenuItemOrders()
{
    $orders= Input::get('orders');
    dd($orders);
}

changeMenuItemOrders action:

您面临的问题是查询字符串参数与路由参数。现在,你有:

public function changeMenuItemOrders($orders)

查找路由参数CCD_ 4。为了实现这一点,您需要以下路线:

Route::get('changeMenuItemOrders/{orders}','SystemController@changeMenuItemOrders');

您可以通过导航到(GET):来访问此功能

http://localhost/sample/public/changeMenuItemOrders/1-2-3

由于您是通过ajax请求创建查询字符串的,因此您的函数中不应该有$orders,而是应该使用通过GET数组访问订单

$orders = Input::get('orders');

希望这有助于澄清问题。此外,附带说明的是,如果您传递多个订单(即1、2和3),请考虑发布orders[]orders[0] 1, orders[1] 2, orders[2] 3),而不是必须在后端拆分的字符串("1-2-3")。