如何获取控制器中的jQuery序列化数据并将其存储到数据库

时间:2019-09-10 04:38:57

标签: jquery laravel

我正在使用ajax发送多个动态输入框数据,所以我不知道如何在控制器中检索数据并将其保存到数据库。

$(".btn_sb").click(function(){

                    var dt=$(".eq_form").serialize();
                    alert(dt);
                    $.ajax({
                        headers: {
                   'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                        },
                        url:'/add-ques',
                        type:'post',
                        data:{ques:dt},
                        success:function(data){

                            if(data.success){
                                //alert("done");
                                $(".scs_msg").fadeIn();
                                //$(".eq_form").trigger('reset');
                            }

                        },
                        error: function (data) {
                        console.log('Error:', data);
                         }


                    });

响应

 Array ( [ques] => _token=js1wz0cTOx7IX20qWuStea79BVgevypvHZReA47X&ques=q1&opta=a&optb=b&optc=c&optd=d&ques2=q2&opta2=a&optb2=b&optc2=c&optd2=d )

2 个答案:

答案 0 :(得分:0)

您可以使用数组发送它们。 您应该具有带有某些data_id的复选框。

<td><input type="checkbox" class="checkbox" data-id="{{$device->deviceid}}"></td>

// javascript to check and uncheck box
$('.checkbox').on('click', function () {
if ($(this).is(':checked', true)) {
    $('.checkbox').checked = false;
} else {
    $('.checkbox').checked = true;
}
});
var idsArr = [];
$(".checkbox:checked").each(function () {
    idsArr.push($(this).attr('data-id'));
});

$.ajax({
url: "{{ route('report.showreports') }}",
method: 'GET',
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
data: {
    ids: idsArr,
},
dataType: 'json',
success: function (data) {
    $('.container-fluid').html(data.html);
},
error: function (data) {
    alert(data.responseText);
}
});

答案 1 :(得分:0)

您要发送的数据不必要地嵌套在另一个对象中。 PHP可以使用本机parse_str函数来解析当前正在发送的字符串格式,然后可以使用foreach循环遍历结果数组中的每个键值对。

您还可以尝试使用jQuery的serializeArray()函数而不是serialize(),然后将结果直接传递给数据,如下所示:

var dt=$(".eq_form").serializeArray();

$.ajax({
    // ... 
    url:'/add-ques',
    type:'post',
    data: dt,
    // ...
});