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

How to pass array into controller in laravel using ajax

提问人:Samitha Ruwan 提问时间:4/28/2023 更新时间:4/28/2023 访问量:31

问:

我只需要知道如何使用 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 函数,用于将这些数据插入数据库

公共函数 addContactDetails(Request $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]);

   }


}
阵列 Ajax Laravel

评论


答:

0赞 Ayoub ait 4/28/2023 #1

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