我尝试使用带有Bootstrap的表单上传文件。我提到Bootstrap的原因通常是表单上传文件很好,但这次它与Bootstrap有关。这可能是也可能不是原因。
我的HTML是:
<!-- Edit Window -->
<form action="" method="post" enctype="multipart/form-data" id="NewsEditorForm">
<div class="panel panel-info" style="position: absolute; top:200px; left:20%; width: 600px; height: 600px; box-shadow: 0px 1px 4px Gainsboro; z-index: 11;" id="NewsEditor" hidden>
<div class="panel-heading">
<h3 class="panel-title"><a id="closeNewsEditor"><span class="glyphicon glyphicon-remove"></span></a> Edit News</h3>
</div>
<div class="panel-body">
<div class="input-group">
<span class="input-group-addon">Title</span>
<input type="text" class="form-control" name="Title" placeholder="">
</div>
<div class="input-group">
<span class="input-group-addon">Short Description</span>
<input type="text" class="form-control" name="Short_Description" placeholder="">
</div>
<div class="input-group">
<span class="input-group-addon">Story</span>
<input type="text" class="form-control" name="Story" placeholder="">
</div>
<div class="input-group">
<span class="input-group-addon">Picture</span>
<input type="file" class="form-control" name="Picture">
</div>
<div style="width: 100%; text-align: center; padding: 10px;">
<button class="btn btn-large btn-primary newcenter" type="submit">Submit</button>
</div>
</div>
</div>
</form>
处理表单的脚本是:
$("#NewsEditorForm").submit(function () {
$.post(prefix_file + 'admin/process/editNewsStory.php',$(this).serialize(),function(data) {
alert(data);
if(data == true){
} else {
}
});
$("#NewsEditor").fadeOut(700);
$(".callbackBackground").fadeOut(500);
$(".newsEditRow").css('background',orig_bg);
setTimeout(function () {window.location.href = 'updatenews.php';},700);
return false;
});
它适用于所有内容,我在js处理程序中添加的alert(data)
通知我它认为没有上传文件(它是print_r($_FILES)
,它返回并清空数组)。此外,点击提交按钮或任何&#34;文件上传进度后,没有延迟。通常出现在浏览器的底部。
答案 0 :(得分:1)
serialize方法不适用于文件字段。如果你想通过AJAX提交文件,你需要采取不同的方法。
来自文档:
来自文件选择元素的数据未被序列化。