【发布时间】:2019-02-22 23:53:00
【问题描述】:
我遇到了一个问题,我无法通过 AJAX 将变量传递给 Laravel 控制器。这是我的代码:
提交订单的AJAX函数:
function submitOrder() {
console.log(JSON.stringify(order.positions));
console.log('SENDING ORDER ',order.positions, ' to the database');
event.preventDefault();
// var id = this.id;
var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
$.ajaxSetup({
headers: {
'Content-Type':'application/json',
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
//FIXME No response
dataType: 'json',
type: "post",
url: '/orders/api/store',
data: {
_method: 'post',
_token: CSRF_TOKEN,
order: JSON.stringify(order.positions)
},
success: function( response ) {
console.log(response);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Status: " + textStatus); alert("Error: " + errorThrown);
}
});
}
routes.php
Route::post('/orders/api/store', 'OrdersController@apiStore');
及控制器功能:
public function apiStore(Request $request) {
$response = [
'request' => $request->order,
'responseText' => 'works',
'status' => '200'
];
return response()->json($response);
}
我得到的回应:
SENDING ORDER [{…}]0:
{product_id: 3, name: "Мороженое фрукты", price: "45.00", quantity: "1"}
to the database // Sending this array
response {request: null, responseText: "works", status: "200"} //This is the response from Laravel
可以看到,请求变量为null,但一定是$request->order值,是AJAX发送的。
【问题讨论】:
-
'order' 是主键/外键吗?
-
检查您的浏览器开发工具 -
order真的发布了吗? -
@Don'tPanic 是的,显示成功通过:请求有效负载:_method=post&token=5hRAHn0Edzxv64gBRfMk0kLQHM8OaWYOaGtJpiHY&order=%5B%7B%22product_id%22%3A1%2C%22name%22%3A%22%D0 %9C%D0%BE%D1%80%D0%BE%D0%B6%D0%B5%D0%BD%D0%BE%D0%B5+%D0%B2%D0%B0%D0%BD%D0%B8 %D0%BB%D1%8C%22%2C%22price%22%3A%2251.00%22%2C%22quantity%22%3A%221%22%7D%5D