Ajax FormData文件上传不起作用[JQuery] [PHP]

时间:2014-04-21 19:05:52

标签: php jquery ajax forms upload

由于某种原因,我的上传表单无效,当我提交表单时,PHP文件运行且我的$ _FILES变量为空。我已经被困了好几个小时,我觉得我已经浏览过这个网站上的每一个帖子,我只是不明白出了什么问题。

HTML

    <form id="uploadform" name="uploadform" method="POST" enctype="multipart/form-data">
      <input id="realupload" name="realupload" type="file" multiple/>
      <input id="uploadsubmit" type="submit" value="upload"/>
</form>

JQuery的

$('#uploadsubmit').click(function(e)
{
    e.preventDefault();

        $.ajax({
            type: "POST",
            url: "upload.php",
            data: function(){
                alert("test");
                var data = new FormData();
                data.append("realupload", jQuery("#realupload").get(0).files[0]);
                return data;
            }
            ,
            processData:false,
            contentType: false,
            cache: false,
            success: function(theData){
                $('#innercontent').html(theData);
            },
            error: function() {
                $('#innercontent').html("ERROR, HELP");
            }
        });

    } 
});

PHP(upload.php)

<?php
//upload.php
if (isset($_FILES["realupload"]))
{
    echo "SUCCESSFUL UPLOAD " . $_FILES["realupload"]["error"];
}
else{
    echo "FILES NOT SET";
}
?>
  • PHP文件只是一个测试文件,用于检查上传是否有效
  • 每次输出FILES NOT SET
  • ajax数据函数内的警报没有运行,我不确定它是否应该
  • 尝试创建多文件上传器

这可能与服务器有关吗?已经有一个论坛上传,其本身允许上传,所以我不认为是这种情况,但我不确定。

谢谢!

编辑:伙计们,感谢您的链接,但您现在可以使用HTML5和XmlHttpRequest2对象上传文件,我正试图弄明白。

2 个答案:

答案 0 :(得分:-2)

只需使用http://jquery.com/download/

中的新jquery库jquery-2.1.1.min.js即可

这肯定会解决你的问题。几天前我遇到了同样的问题,所以我尝试了上面的库,它确实适合我。

答案 1 :(得分:-3)

你不能通过ajax发送文件,你必须直接使用PHP来做到这一点。