【发布时间】:2020-02-25 19:19:04
【问题描述】:
我想将这个对象数组解析为 PHP 可以读取的内容,以便我可以将其保存到数据库中。 这是对象数组,来自控制台日志,是发送到我的 axios 帖子的内容:
"user_id": 4,
Array [
Object {
"cartID": "33S",
"id": 33,
"image": "http://myurl/uploads/5db88f40c857dtest.jpg",
"name": "testt",
"quantity": 1,
"size": "S",
},
Object {
"cartID": "32S",
"id": 32,
"image": "https://dummyimage.com/600x400/000/fff",
"name": "pottery",
"quantity": 1,
"size": "S",
},
Object {
"cartID": "34S",
"id": 34,
"image": "http://myurl/uploads/5db8918fac485test.jpg",
"name": "Nature",
"quantity": 1,
"size": "S",
},
]
在 PHP 上我有:
public static function AddOrder(Request $request)
{
$add = DB::table('Orders')->insert([
'user' => $request->user_id
]);
$items = json_decode($request->cartItems, true);
foreach ($items as $item) {
DB::table('order_items')->insert([
'order_id' => DB::table('orders')->latest('user_id')->first(),
'product' => $item->id,
'quantity' => $item->quantity,
'size' => $item->size
]);
}
return $add;
}
每当我尝试这个时,我总是会得到一个错误 cartItems can't be null。我什至尝试在AddOrder 中的任何内容运行之前返回cartItems,但它只是说它是空的。我正在使用 axios 发送它:
axios.post('http://myurl/api/orders/create', {
cartItems: cart,
user_id: user.id
})
.then(res => {
console.log(res.data)
})
.catch(err => {
console.log(err)
})
我也试过另一种方法
let newReq = {
user_id: 1
};
for(let i = 0; i < cart.length; i++) {
Object.keys(cart[i]).forEach((key) => {
let newkey = 'cartItems[' + i + '][' + key + ']';
newReq[newkey] = cart[i][key];
});
}
发送后,在 Laravel 上响应我使用的客户端:
return response()->json($request->all());
我明白了
Object {
"cartItems[0][cartID]": "33S",
"cartItems[0][id]": 33,
"cartItems[0][image]": "http://trayvonnorthern.com/Edgewood-API/public/uploads/5db88f40c857dtest.jpg",
"cartItems[0][name]": "testt",
"cartItems[0][quantity]": 1,
"cartItems[0][size]": "S",
"cartItems[1][cartID]": "32S",
"cartItems[1][id]": 32,
"cartItems[1][image]": "https://dummyimage.com/600x400/000/fff",
"cartItems[1][name]": "pottery",
"cartItems[1][quantity]": 1,
"cartItems[1][size]": "S",
"cartItems[2][cartID]": "34S",
"cartItems[2][id]": 34,
"cartItems[2][image]": "http://trayvonnorthern.com/Edgewood-API/public/uploads/5db8918fac485test.jpg",
"cartItems[2][name]": "Nature",
"cartItems[2][quantity]": 1,
"cartItems[2][size]": "S",
"user_id": 1,
}
当我这样做时
return response()->json($request->cartItems);
它什么也不返回。
【问题讨论】:
-
当你使用
$request->user_id时它也是空的吗?请在您的问题中添加dd($request->all());。 -
是的,当我返回 $request 时,我只得到一个空数组
-
如Jean所说,请在
AddOrder的开头做dd($request->all());,并确保您已从axios请求中获得任何数据 -
我使用 laravel 作为 REST API。不只是向我的客户端返回响应会达到同样的效果吗?
-
dd返回生成的 HTML 页面,其中包含可读格式的响应内容。在您的情况下,返回response()->json($request->all())就足够了
标签: javascript php json laravel javascript-objects