【发布时间】:2017-06-15 12:54:51
【问题描述】:
我有表单,在我的引导模式中有两个隐藏的输入和提交按钮
<form method="POST" action="http://127.0.0.1:8000/tours/23/edit" accept-charset="UTF-8" id="editVideoForm">
<div class="modal-body modal-video-cont">
<div class="modal-body-container">
</div>
</div>
<div class="clearfix"></div>
<div class="modal-footer">
<div class="col-md-5 col-md-offset-7">
<input class="btn green pull-left ddf_button_pad" name="update_video_form" type="submit" value="Save">
<button data-dismiss="modal" type="button" class="btn green btn-outline pull-right ddf_button_pad">Cancel</button>
<input class="position-input" id="editVidTempPos" name="template_position" type="hidden">
<input id="editVidType" name="type" type="hidden" value="video">
</div>
</div>
</form>
在<div class="modal-body-container"> 元素中,我通过 ajax 加载内容(包含单选按钮)(工作正常)
<input type="radio" class="blockRadio video-input" name="resource" data-position="" value="http://127.0.0.1:8000/files/videos/424046_00_05_MM30_exercisefiles.mp4" style="position: absolute; opacity: 0;">
<input type="radio" class="blockRadio video-input" name="resource" data-position="" value="http://127.0.0.1:8000/files/videos/424046_00_05_MM30_exercisefiles.mp4" style="position: absolute; opacity: 0;">
但是,当我提交表单时,我在请求正文中看不到这些单选元素(应该有 resource 索引)
"_token" => "FF1zRnyORk9BzBUIWTj13PI06SZxYld1iLfpNZ0e"
"template_position" => "6"
"type" => "video"
这些输入出现在 DOM 树中。发送表单之前
$( "#editVideoForm" ).submit(function( event ) {
event.preventDefault();
$('#edit-vid').modal('hide');
var formdata = $(this).serialize();
$(this).serialize() 没有看到新的输入。控制台日志
_token=FF1zRnyORk9BzBUIWTj13PI06SZxYld1iLfpNZ0e&template_position=6&type=video
更新
在发送表单之前,触发此事件
event.preventDefault();
$('#edit-vid').modal('hide');
var formdata = $(this).serialize();
var formUrl = $(this).attr('action');
var position = $('#editVidTempPos').val();
console.log('#placeForPos' + position);
$.ajax({
type: 'POST',
url: formUrl,
data: formdata,
beforeSend: function( xhr ) {
$('#placeForPos' + position).html('<div class="mt-overlay-2 margin-top-10">' +
'<div class="loader_wrapper">' +
'<img class="loader" src="/images/loader.gif" alt="Loader" />' +
'</div>' +
'</div>');
//console.log(xhr);
},
success: function(data) {
$('#placeForPos' + position).html(data);
swal({title: "Video for position " +position+ " changed",type: "success"});
},
error: function(xhr, str){
alert('Error: ' + xhr.responseCode);
当它序列化时,它看不到新的输入,但是如果我删除这个事件,新的输入就会显示出来
【问题讨论】:
-
这很可能意味着 a) 你的新元素 not 没有像你想象的那样被附加到表单中(在 DOM 检查器中验证它们实际上是 在表单内部),或者b)您没有以“正常方式”发送表单,而是有一些构建请求的JS / Ajax,并且不考虑这些新字段。
-
感谢您的回复。 a) 它们出现在 DOM 树中 b) 是的,在发送之前有一些 js(抱歉之前没有提到,我不是唯一一个从事该项目的人)。我更新问题
标签: javascript jquery ajax forms laravel-5