如何使用 ajax 将数组传递给 laravel 中的控制器

问题描述 投票:0回答:1

我只需要知道如何使用 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]);

   }


}
arrays ajax laravel
1个回答
0
投票

我认为在这种情况下你不需要 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

© www.soinside.com 2019 - 2024. All rights reserved.