我只需要知道如何使用 ajax 将数组传递到 Laravel 控制器并将这些数据保存在数据库中。我尝试了几种方法。但服务响应是 Object { error: "No data received"}。 API状态码为200。
这是我的ajax代码。 函数 AddContactData() {
var contactData = [];
var table = document.getElementById('customer_contact'),
rows = table.getElementsByTagName('tr'),
i, j, cells, customerId;
for (i = 0, j = rows.length; i < j; ++i) {
cells = rows[i].getElementsByTagName('td');
if (!cells.length) {
continue;
}
var data = {
"name": cells[0].childNodes[0].value,
"designation": cells[1].childNodes[0].value,
"mobile": cells[2].childNodes[0].value,
"fixed": cells[3].childNodes[0].value,
"email": cells[4].childNodes[0].value,
"remark": cells[5].childNodes[0].value
};
contactData.push(data);
}
//console.log(contactData);
var contactDetails = JSON.stringify(contactData);
console.log(contactData);
$.ajax({
url: '/saveContact',
type:'POST',
data: contactDetails,
headers:{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: function (response) {
console.log(response);
// $('#frmCustomer')[0].reset();
}, error: function (data) {
console.log(data)
}
})
};
这是我的 laravel 函数,用于将这些数据插入 DB
公共函数 addContactDetails(请求 $request){
try{
$data = json_decode($request->input('contactDetails'), true);
if(empty($data)){
return response()->json(['error' => 'No data received']);
}
foreach($data as $key =>$value){
if(is_array($value)){
foreach($value as $row){
DB::table('customer_contacts')->insert([
'customer_id' => 1,
'contact_person'=> $row['name'],
'designation'=>$row['designation'],
'mobile'=>$row['mobile'],
'fixed'=>$row['fixed'],
'email'=>$row['email'],
'remarks'=>$row['remark']
]);
}
}
return response()->json(["status" => true]);
}
}catch(Exception $ex){
if ($ex instanceof ValidationException) {
return response()->json(["ValidationException" => ["id" => collect($ex->errors())->keys()[0], "message" => $ex->errors()[collect($ex->errors())->keys()[0]]]]);
}
return response()->json(["error" => $ex]);
}
}
我认为在这种情况下你不需要 JOSN 解码,因为 laravel 会自动将对象转换为 PHP 数组 试试这个
$validator = validator($request->all(), [
'ids' => 'required|array',
]);
if ($validator->fails()) {
return [
'errors' => $validator->errors()->toArray()
];
}
dump($validator->validated()['ids']);
要在控制台中查看数据,我建议您使用这个包laravel-dump-server/installation