我在單擊按鈕上進行 ajax 呼叫,然后將陣列資料發送到控制器。所以這是ajax呼叫:
const saveBtnOnClick = () => {
//e.preventDefault();
loopMarker(poly);
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url: "{{ route('storeRouteMap') }}",
type: 'POST',
data: {markers: markers},
success: function (response) {
console.log(response);
},
error: function (response) {
console.log("Error " response);
}
})
}
有效載荷開發者工具中傳遞的資料如下所示:
markers[0][lat]: 3.2845171928345853
markers[0][long]: 101.8885194254942
markers[0][sequence]: 0
markers[0][route_id]: 5
markers[1][lat]: 3.591580368128944
markers[1][long]: 102.5367127848692
markers[1][sequence]: 1
markers[1][route_id]: 5
在控制器中:
public function store(Request $request): JsonResponse
{
$out = new ConsoleOutput();
$routeMaps = $request->all();
$out->writeln($routeMaps[1]['long']);
try{
foreach($routeMaps as $key=>$value){
$out->writeln($value['lat']);
$out->writeln($value['long']);
$out->writeln($value['sequence']);
$out->writeln($value['route_id']);
}
但$out->writeln($value['lat'])給出錯誤,未定義陣列鍵 'lat'并$out->writeln($routeMaps[1]['long'])給出錯誤,未定義陣列鍵 1;那么這個陣列是如何組織我迭代的呢?
uj5u.com熱心網友回復:
您正在以鍵值的形式傳遞資料,即markers: markers。因此,您在控制器中的請求引數將類似于:$request->markers。您需要遍歷$request->markers.
$routeMaps = $request->markers;
foreach($routeMaps as $key => $value){
$out->writeln($value['lat']);
$out->writeln($value['long']);
$out->writeln($value['sequence']);
$out->writeln($value['route_id']);
}
希望這會奏效:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/425939.html
