“我有简单的表单,并用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));
这是返回空数组;
答案 0 :(得分:3)
AJAX ,只是 JavaScript ,无法访问存储在文件系统中的文件并将其传输到服务器。您可以使用隐藏的iframe来执行此操作。有一个很好的jquery form plugin,它可以让你的表单看起来和感觉就像它是AJAX,它也是supports file uploads。
$(function() {
$('#formid').bind("submit", function(){
$(this).ajaxForm(function(result) {
alert('the form was successfully posted!');
});
});
});
答案 1 :(得分:2)
无法通过ajax上传文件。您可以使用IFrame上传文件,而无需刷新页面。你可以在这里查看更多细节:
http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html
使用XHR2,支持通过AJAX上传文件。例如,通过FormData对象,但不幸的是,所有/旧浏览器都不支持它。
答案 2 :(得分:1)
<script src="http://malsup.github.com/jquery.form.js"></script>
$(function() {
$('#submitForm').ajaxForm(function(result) {
$("#HiddenRowsa").hide();
$('#table').prepend(result);
}).submit();
});
我得到的所有答案都是相同的并且 RIGHT ,这个简单的jquery代码将起作用,这里提供的所有链接都缺少.submit()函数ajaxForm,所以其他所有正在寻找这类问题的人首先在头部包含上面的文件,然后编写上面的代码
答案 3 :(得分:0)
jQuery无法使用简单的AJAX处理PHP文件,因为$ _FILES是一个全局PHP变量,与javascript完全无关。你可以使用像这样的插件:jQuery File Upload,或更多。只需search and find on google。
您也可以使用iFrame,但我不建议使用它,因为在IE中它会让页面发生变化时发出令人讨厌的点击。
答案 4 :(得分:0)
这是另一种解决方案,如果您想立即上传文件,请使用ajaxForm执行此操作,在以下链接中找到ajaxForm not callingBack
以下是ajaxForm的链接,以了解有关方法的更多信息:: http://jquery.malsup.com/form/#ajaxForm