[英]Ajax form post not posting input type with file
“我的表单很简单,并用ajax发布,但是我无法在php脚本中获取$ _FILES”
<form id="submitForm" method="post" enctype="multipart/form-data" >
<input type="file" name="file" />
<input type="text" name="name" />
</form>
下面是ajax代码,告诉我我在哪里弄错了
$.ajax({
url: '<?php echo base_url(); ?>getter/addItemRow',
type:"POST",
data:$('#submitForm').serialize(),
context: $('#table')
}).done(function(data) {
this.prepend(data);
});
下面是php代码行
print_r(var_dump($_FILES));
这将返回空数组;
只是JavaScript的 AJAX无法访问存储在文件系统中的文件并将其传输到服务器。 您可以使用隐藏的iframe来执行此操作。 有一个不错的jquery表单插件 ,它使您可以使表单看起来像AJAX,它还支持文件上传 。
$(function() {
$('#formid').bind("submit", function(){
$(this).ajaxForm(function(result) {
alert('the form was successfully posted!');
});
});
});
无法通过ajax上传文件。 您可以使用IFrame上传文件,而无需刷新页面。 您可以在此处查看更多详细信息:
http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html
使用XHR2,支持通过AJAX上传文件。 例如通过FormData对象,但是不幸的是,所有/旧的浏览器都不支持它。
<script src="http://malsup.github.com/jquery.form.js"></script>
$(function() {
$('#submitForm').ajaxForm(function(result) {
$("#HiddenRowsa").hide();
$('#table').prepend(result);
}).submit();
});
我得到的所有答案都是正确的 ,这将起作用的简单jquery代码,此处提供的所有链接都丢失了。ajaxForm中的.submit()函数,所以所有正在寻找的其他人对于这种问题,首先在头中包含以上文件,然后编写以上代码
jQuery不能仅使用AJAX处理PHP文件,因为$ _FILES是一个全局PHP变量,与JavaScript完全无关。 您可以使用这样的插件: jQuery File Upload ,或更多。 只需在Google上搜索和查找即可 。
您也可以为此使用iFrame,但是我不建议您这样做,因为在IE中,它会给您带来讨厌的点击,就像页面已更改一样。
这是一个替代解决方案,如果您想立即上传文件,请使用ajaxForm进行上传,在以下链接中您会发现ajaxForm没有调用Back
这是ajaxForm的链接,以了解有关该方法的更多信息:: http://jquery.malsup.com/form/#ajaxForm
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.