javascript - jQuery+ajax文件上传失败,什么原因?

 蜜小嘟_546 发布于 2022-12-01 01:57

html部分:

文件上传

后端php部分:ajax.php

js部分,用js上传的时候是成功的,但用jquery的时候出现了两种错误:
一种是用$.ajax方法:

$(function(){
        $(".sub").click(function(){
    
         var fd=new FormData($("#up"));
             
       $.ajax({  
          url: 'ajax.php' ,  
          type: 'POST',  
          data: fd,  
          async: false,  
          cache: false,  
          contentType: false, 
          processData: false,  
          success: function (returndata) {  
              alert(returndata);  
          },  
          error: function (returndata) {  
              alert(returndata);  
          }  
     });  
            
})
})  

报错说找不到$_FILES里的pic,为什么呢?
补充:这个地方搞定了,var fd=new FormData($("#up"));需要写成:
var fd=new FormData($("#up")[0]);
具体可见:http://segmentfault.com/q/101...
和 http://segmentfault.com/a/119...

用$.post方法的时候:

$.post("ajax.php",fd,function(data){
            console.log(data);
         })

报错:Uncaught TypeError: Illegal invocation
这又是为什么呢?
(jquery是1.7.1版本的)
2017.5.5 补充:
直接用$.post是不行的,但如果说懒得用$.ajax的话,可以用FileReader读取文件的内容,为base64的数据,就可以直接用$.post来发给后端了,当然后端的处理方式会不太一样。

6 个回答
  • 设置不对。

    var data = new FormData();
    data.append('file', $('input[type=file]')[0].files[0]);
    $.ajax({
            url: 'ajax.php',
            data: data,
            processData: false,
            type: 'POST'
            contentType: 'multipart/form-data',
            mimeType: 'multipart/form-data',
            success: function (data) {
                alert(data);
            }
        });
    
    2022-12-01 05:01 回答
  • Ajax是不能上传附件的,如果需要上传附件请参考使用jQuery form插件

    2022-12-01 05:01 回答
  • ajax只能传输文本流,不能运输二进制的文件。

    2022-12-01 05:01 回答
  • 可参考我写的关于FormData不刷新上传文件

    FormData

    2022-12-01 05:01 回答
  • ajax不能上传文件,还有form上传文件的enctype属性是要有的

    2022-12-01 05:01 回答
  •       contentType: false, 
          processData: false,
    2022-12-01 05:01 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有