php - 未将 JQuery 加载的输入传递给控制器
问题描述
我制作了一个表单,其中将根据 create.blade.php 中“机器”下拉列表的选定值通过 ajax 加载输入表。
每当我提交表单并使用 dd($request) 时,它只返回以下内容:
array:5 [▼
"_token" => "KRCNWU8jxnT2RSrCrNOuGX9tfdC0TVUWxO3gKVCP"
"machine" => "14"
"breakdowndate" => null
"breakdowntime" => null
"Add" => "Submit"
]
创建.blade.php
<div id="add" class="modal fade" role="dialog">
<div class="modal-dialog modal-xl adjust-modal-xl">
<!-- Modal content-->
<div class="modal-content">
<!-- <div class="modal-header text-center">
</div> -->
<div class="modal-body">
<form class="form-horizontal" action="{{url('breakdown/store')}}" method="POST" id="add-form">
{{csrf_field()}}
@if (count($errors->store) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->store->all() as $error)
<li class="small">{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="form-group row">
<label class="label-control col-lg-2">Machine:</label>
<div class="col-lg-4">
<select name="machine" id="machine" class="form-control chosen-select">
<option value=""></option>
@forelse($machines as $machine)
<option value="{{$machine->id}}">({{$machine->section}}) {{$machine->machine_no}}</option>
@empty
@endforelse
</select>
</div>
</div>
<div class="form-group row">
<label class="label-control col-lg-2">Parts:</label>
<div class="col-lg-12">
<div id="partlist">
</div>
</div>
</div>
<div class="form-group row">
<label class="label-control col-lg-2">Date of Breakdown:</label>
<div class="col-lg-4">
<input type="date" name="breakdowndate" id="breakdowndate" class="form-control ">
</div>
</div>
<div class="form-group row">
<label class="label-control col-lg-2">Time of Breakdown:</label>
<div class="col-lg-4 input-group" style="align-self: flex-start;">
<input type="text" name="breakdowntime" id="breakdowntime" class="form-control datetimepicker-time" autocomplete="off" data-toggle="datetimepicker" data-target="#breakdowntime">
<div class="input-group-append"><span class="input-group-text"><small>Military Time</small></span></div>
</div>
</div>
<div class="form-group row">
<div class="col-lg-12 pull-right">
<input type="submit" name="Add" class="btn btn-primary pull-right">
</div>
</div>
</form>
</div>
</div>
</div>
</div>
index.blade.php jQuery 部分
$("#machine").change(function(){
var machineid = $(this).val();
if(machineid !== '')
{
$.ajax({
url: "{{url('breakdown/getParts')}}/"+machineid,
type: 'get',
dataType: 'json',
success:function(data){
var partadd = '';
// partadd+='<input type="checkbox" onclick="checkAll()" id="checkall"/> '
// partadd+='<label><h6>Select All</h6></label><br>'
partadd+='<table class="table table-bordered table-striped">';
partadd+='<thead>';
partadd+='<tr>';
partadd+='<th><input type="checkbox" onclick="checkAll()" id="checkall"/></th>'
partadd+='<th class="text-center">Part(Level II)</th>';
partadd+='<th class="text-center">Disassembly</th>';
partadd+='<th class="text-center">Measuring</th>';
partadd+='<th class="text-center">Inspection</th>';
partadd+='<th class="text-center">Correction</th>';
partadd+='<th class="text-center">Assembly</th>';
partadd+='<th class="text-center">Total</th>';
partadd+='<th class="text-center">Start Date</th>';
partadd+='<th class="text-center">Start Time</th>';
partadd+='<th class="text-center">End Date</th>';
partadd+='<th class="text-center">End Time</th>';
partadd+='</tr>';
partadd+='</thead>';
partadd+='<tbody>';
// console.log(data);
for(var i = 0;i < data.length;i++){
var partname = data[i].name;
var partid = data[i].id;
var partdescription = data[i].description;
var partdisassembly = data[i].disassembly !== null ? data[i].disassembly : "00:00";
var partmeasuring = data[i].measuring !== null ? data[i].measuring : "00:00";
var partinspection = data[i].inspection !== null ? data[i].inspection : "00:00";
var partcorrection = data[i].correction !== null ? data[i].correction : "00:00";
var partassembly = data[i].assembly !== null ? data[i].assembly : "00:00";
var partmanhours = data[i].manhours !== null ? data[i].manhours : "00:00";
partadd+='<tr>';
partadd+='<td><input type="checkbox" id="part-'+partid+'" class="partcheck" name="part[]" value="'+partid+'"/> </td>';
partadd+='<td><label><h6>'+partname+' '+partdescription+'</h6></label><br></td>';
partadd+='<td><input type="text" name="disassembly['+partid+']" id="part-disassembly-'+partid+'" class="form-control datetimepicker-part disassembly" data-toggle="datetimepicker" data-target="#part-disassembly-'+partid+'" value="'+partdisassembly+'"></td>';
partadd+='<td><input type="text" name="measuring['+partid+']" id="part-measuring-'+partid+'" class="form-control datetimepicker-part" data-toggle="datetimepicker" data-target="#part-measuring-'+partid+'" value="'+partmeasuring+'"></td>';
partadd+='<td><input type="text" name="inspection['+partid+']" id="part-inspection-'+partid+'" class="form-control datetimepicker-part" data-toggle="datetimepicker" data-target="#part-inspection-'+partid+'" value="'+partinspection+'"></td>';
partadd+='<td><input type="text" name="correction['+partid+']" id="part-correction-'+partid+'" class="form-control datetimepicker-part" data-toggle="datetimepicker" data-target="#part-correction-'+partid+'" value="'+partcorrection+'"></td>';
partadd+='<td><input type="text" name="assembly['+partid+']" id="part-assembly-'+partid+'" class="form-control datetimepicker-part" data-toggle="datetimepicker" data-target="#part-assembly-'+partid+'" value="'+partassembly+'"></td>';
partadd+='<td><input type="text" name="total['+partid+']" id="part-total-'+partid+'" class="form-control datetimepicker-part" data-toggle="datetimepicker" data-target="#part-total-'+partid+'" value="'+partmanhours+'" readonly></td>';
partadd+='<td><input class="form-control" type="date" name="startdate['+partid+']" id="part-startdate-'+partid+'"></td>';
partadd+='<td style="width:8%!important;"><input class="form-control datetimepicker-part" type="text" name="starttime['+partid+']" id="part-starttime-'+partid+'" autocomplete="off" data-toggle="datetimepicker" data-target="#part-starttime-'+partid+'" value="00:00"></td>';
partadd+='<td style="width:5%!important;"><input class="form-control" type="date" name="enddate['+partid+']" id="part-enddate-'+partid+'"></td>';
partadd+='<td style="width:8%!important;"><input class="form-control datetimepicker-part" type="text" name="endtime['+partid+']" id="part-endtime-'+partid+'" autocomplete="off" data-toggle="datetimepicker" data-target="#part-endtime-'+partid+'" value="00:00"></td>';
partadd+='</tr>';
}
partadd+='</tbody>';
partadd+='</table>';
$("#partlist").html(partadd);
// $(function () {
// $('.datetimepicker-part').datetimepicker({
// format: 'HH:mm'
// });
// $('.datetimepicker-part').on('change.datetimepicker', function(){
// var elementid = $(this).attr('id');
// var id = $(this).attr('id').match(/\d+/);
// getTotalPart(id);
// });
// });
}
});
}
});
网页.php
Route::post('breakdown/store', 'BreakdownController@store');
Route::get('breakdown/getParts/{machine}', 'BreakdownController@getParts');
故障控制器.php
dd($request->all());
除控制器部分外,一切正常。每当我使用 dd($request->all()) 时,它只返回:
array:5 [▼
"_token" => "KRCNWU8jxnT2RSrCrNOuGX9tfdC0TVUWxO3gKVCP"
"machine" => "14"
"breakdowndate" => null
"breakdowntime" => null
"Add" => "Submit"
]
我需要获取 ajax 加载的输入,但是只包含 create.blade.php 模式中的输入字段。
解决方案
好的,很明显,我在 index.blade.php 中的 html 缺少</table>
结束标记。现在它可以工作了,我现在明白了:
array:16 [▼
"_token" => "6Dej3itbusd4AjzN879BWDrT243cDz4P7FQRQvH5"
"machine" => "13"
"part" => array:5 [▶]
"disassembly" => array:5 [▶]
"measuring" => array:5 [▶]
"inspection" => array:5 [▶]
"correction" => array:5 [▶]
"assembly" => array:5 [▶]
"total" => array:5 [▶]
"startdate" => array:5 [▶]
"starttime" => array:5 [▶]
"enddate" => array:5 [▶]
"endtime" => array:5 [▶]
"breakdowndate" => null
"breakdowntime" => null
"Add" => "Submit"
]
所以请忽略这个问题
推荐阅读
- c# - C# - SELECT LINQ 操作中的异步方法
- asp.net-core - 如何避免或关闭 Blazor 客户端托管应用程序中的持久(保持活动)连接?
- python - Tensorflow 打印奇怪的符号:as []
- sql - 从字符串中查找字符的位置
- websocket - 如何使用 websocket 和 FileInterceptor 在 NestJS 中上传文件?
- python - 无法让 gcs 为上传的对象返回 md5hash 和 crc32c
- reactjs - 仅在调用 getUserMedia 时才显示用于视频的 Webrtc MediaStream
- php - zend 框架 3 段路由不起作用
- webpack - NW.js + vue-cli:如何读取本地文件?
- firebase - 使用 Firebase 存储图像和数据的标准方法是什么?