使用 FormData 中的文件调用 ajax 时出现错误 404(未找到)
Error 404 (not found) in ajax call with file inside FormData
我正在尝试调用 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 调用时,在检查 window 中我得到以下错误
jquery.min.js:4 POST https://www.mywebsite.com/it/file/upload/ 404 (Not Found)
听起来很奇怪,因为当我直接浏览脚本路径时,它没有给出任何404响应。
如果我注释 "contentType" 参数错误消失,但从 PHP 脚本收到的响应是 null
。
我错过了什么?
您需要将内容类型指定为预期的类型。正如您在 post 中提到的,php
文件有
header('Content-Type: application/json');
所以,尝试改变它
contentType: false,
到
contentType: "application/json; charset=utf-8",
我正在尝试调用 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 调用时,在检查 window 中我得到以下错误
jquery.min.js:4 POST https://www.mywebsite.com/it/file/upload/ 404 (Not Found)
听起来很奇怪,因为当我直接浏览脚本路径时,它没有给出任何404响应。
如果我注释 "contentType" 参数错误消失,但从 PHP 脚本收到的响应是 null
。
我错过了什么?
您需要将内容类型指定为预期的类型。正如您在 post 中提到的,php
文件有
header('Content-Type: application/json');
所以,尝试改变它
contentType: false,
到
contentType: "application/json; charset=utf-8",