在控制器的数组中传递值,但只有第一个数组值被获取

passing values in array in controller but only first array value is getting

提问人:Meera 提问时间:8/10/2023 最后编辑:Meera 更新时间:8/10/2023 访问量:43

问:

在这里,我通过AJAX传递数组,在控制器中,我正在为获取所有值编写一个循环,但只有第一个数组值正在获取这是我的响应数组代码,显示在dd($request->all())之后 dd response of array

这是我的控制器代码,只得到第一个数组

  $formDataArray = $request->all();
        dd($formDataArray);
        foreach ($formDataArray as $formData) {
            $customInputName = $formData['customInputName'];
            $inputType = $formData['inputType'];
            $checkedValues = $formData['checkedValues'];

            dd($customInputName, $inputType, $checkedValues);

        }

我想要所有值,因为我想在数据库中插入每个值。

整个功能代码

    // for remove duplicate form
    function removeLastElem() {
    document.getElementById('customField').lastChild.remove()
}
     // function for make copy of form
     function duplicateForm() {
            var elmnt = document.getElementById("addCustomField");
            var cln = elmnt.cloneNode(true);
            document.getElementById("customField").appendChild(cln);
        }
         // for insert data into database
         function insertData(){
          $.ajaxSetup({
            headers: {
            'X-CSRF-TOKEN': '{{ csrf_token() }}'
            }
            });
            var image = $('#image').prop('files')[0]; 
            var formData = new FormData();
            formData.append('eventName', $('#eventName').val());
            formData.append('image', image);
            formData.append('price',$('#price').val());
            formData.append('location',$('#location').val());
            formData.append('desc',$('#desc').val());
            
            //custom fields
            const forms = document.querySelectorAll('form[name="addCustomField"]');
            const formDataArray = [];
        
            forms.forEach((form, index) => {
                const customInputName = form.querySelector('[name="customInputName[]"]').value;
                const inputType = form.querySelector('[name="inputType[]"]').value;
                const checkboxes = form.querySelectorAll('[name="validation[]"]:checked');
                const checkedValues = Array.from(checkboxes).map(checkbox => checkbox.value);
        
                formDataArray.push({
                    customInputName: customInputName,
                    inputType: inputType,
                    checkedValues: checkedValues
                });
            }); 
                $.ajax({
                        type: 'POST',
                        dataType: 'json',
                        url: '{{ url('/inputForm') }}',
                        data: JSON.stringify(formDataArray),
                          formData,
                        contentType: 'application/json',
                        processData: false, 
                        success: function(response) {
                            console.log(response);
                            var successDiv = document.getElementById('successMessage');
                            successDiv.innerHTML = response.message;
                            successDiv.classList.add('alert', 'alert-success');
                        } 
                    });
        }
    </script> ```
阵列 Ajax Laravel foreach 控制器

评论

0赞 mrhn 8/10/2023
你知道dd()会杀死进程,因此只会返回一次吗?因为该数据结构或获取值的方式没有任何问题。
0赞 Meera 8/10/2023
那么如何打印所有值呢?@mrhn
0赞 mrhn 8/10/2023
你可以用 dump() 来代替它不会停止。但是,相反,告诉我们你想用数据做什么,似乎这部分被遗漏了,我们相当模糊地描述了应该做什么。
0赞 Meera 8/10/2023
@mrhn我想将这些所有数据插入数据库 ' foreach ($formDataArray as $item) { $customInputName = $item['customInputName']; $inputType = $item['inputType']; $checkedValues = $item['checkedValues']; // dd($customInputName); $customInput = new inputForm(); $customInput->customInputName = $customInputName; $customInput->inputType = $inputType; $customInput->validation = $checkedValues; $customInput->eventid = '1'; $customInput->save(); }`
0赞 mrhn 8/10/2023
这也应该有效

答:

0赞 Ali Raza 8/10/2023 #1

试试这个。

    $formDataArray = $request->all();
   
    foreach ($formDataArray as $formData) {
        $customInputName = $formData['customInputName'];
        $inputType = $formData['inputType'];
        $checkedValues = $formData['checkedValues'];
        
        //get checked values from array like this  
        $checkedValue1  =  $checkedValues[0];
        $checkedValue2  =  $checkedValues[1];
        
        dd($customInputName, $inputType, $checkedValue1, $checkedValue2);

        
        if($customInputName, $inputType, $checkedValue1, $checkedValue2){
        //insert here
        }



    }

评论

0赞 Meera 8/10/2023
一切都奏效了,数据正在插入这个数组,现在我在函数中遇到了一个问题,我在上行时添加了这个问题
0赞 Ali Raza 8/10/2023
您能详细说明一下,您在功能上面临什么问题吗?它是在 JavaScript 中吗?
0赞 Meera 8/10/2023
查看这篇文章,我已经详细说明了 stackoverflow.com/q/76875001/22000035