2

“我有简单的表格并使用 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));

这是返回空数组;

4

5 回答 5

3

您不能使用 AJAX / JavaScript 来传输文件!

AJAX只是JavaScript,无法访问存储在文件系统中的文件并将其传输到服务器。您可以使用隐藏的 iframe 来执行此操作。有一个很好的jquery 表单插件,它可以让你的表单看起来和感觉像是 AJAX,它也支持文件上传

这个插件使用的代码非常简单:

$(function() {
    $('#formid').bind("submit", function(){
        $(this).ajaxForm(function(result) {
            alert('the form was successfully posted!');
        });
    });
});
于 2012-10-17T06:19:10.603 回答
2

无法通过 ajax 上传文件。您可以使用 IFrame 上传文件,而无需刷新页面。您可以在此处查看更多详细信息:

http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html

XHR2 支持通过 AJAX 上传文件。例如通过 FormData 对象,但不幸的是,所有/旧浏览器都不支持它。

于 2012-10-17T06:17:24.250 回答
1
<script src="http://malsup.github.com/jquery.form.js"></script> 


$(function() { 
    $('#submitForm').ajaxForm(function(result) {
                    $("#HiddenRowsa").hide();
                    $('#table').prepend(result);
                }).submit();
         });

我得到的所有答案都是相同且正确的,这是可以工作的简单 jquery 代码,此处提供的所有链接都缺少 ajaxForm 中的 .submit() 函数,所以所有其他正在寻找的人对于这种问题,首先在头中包含上面的文件,然后编写上面的代码

于 2012-10-18T07:44:39.223 回答
0

jQuery 无法使用简单的 AJAX 处理 PHP 文件,因为 $_FILES 是一个全局 PHP 变量,与 javascript 完全无关。你可以使用这样的插件:jQuery File Upload,或者更多。只需在 google 上搜索和查找

您也可以使用 iFrames,但我不推荐它,因为在 IE 中它会像页面已更改一样提供令人讨厌的点击。

于 2012-10-17T06:15:35.723 回答
0

这是另一种解决方案,如果您想立即上传文件,请使用 ajaxForm 这样做,在以下链接中您会发现ajaxForm not callingBack

这是 ajaxForm 的链接,以了解有关方法的更多信息:: http: //jquery.malsup.com/form/#ajaxForm

于 2012-10-17T06:18:10.823 回答