首页 文章

使用FormData中的文件进行ajax调用时出现错误404(未找到)

提问于
浏览
0

我正在尝试调用PHP脚本来通过Ajax上传文件 .

var fd = new FormData();
fd.append('file', file);
console.log(file);

var xhr = $.ajax({
  url: 'https://www.mywebsite.com/it/file/upload/',
  type: 'POST',
  dataType: 'json',
  data: fd,
  cache: false,
  contentType: false,
  processData: false,

  success: function(result, message, xhr)
  {
    console.log(result);
  }
});

目前,PHP脚本只显示接收的文件数据

header('Content-Type: application/json');
echo json_encode($_FILES['file']);
die();

传递给ajax数据的“file”对象如下

File {errors: 0, name: "wedding.jpg", lastModified: 1500572565619, lastModifiedDate: Thu Jul 20 2017 19:42:45 GMT+0200 (ora legale Europa occidentale), webkitRelativePath: ""…}

但是当调用ajax调用时,在inspect窗口中我收到以下错误

jquery.min.js:4 POST https://www.mywebsite.com/it/file/upload/ 404 (Not Found)

这听起来很奇怪,因为当我直接浏览脚本路径时,它不会给出任何404响应 . 如果我对"contentType"参数进行注释,则错误消失,但从PHP脚本收到的响应为 null . 我错过了什么?

1 回答

  • 0

    您需要将内容类型指定为预期的内容 . 正如您在帖子中提到的那样, php 文件有

    header('Content-Type: application/json');
    

    所以,尝试改变它

    contentType: false,
    

    contentType: "application/json; charset=utf-8",
    

相关问题