【发布时间】:2025-12-09 13:10:02
【问题描述】:
我正在使用 Slim PHP 框架并尝试通过以下方式使用 Jquery.ajax() 发送 FormData:
var data = new FormData();
data.append('some_name', 'some_data');
data.append('a_file', $('input[name=the_file_form_field]').get(0).files[0]));
$.ajax({
url: 'the_destination_url',
data: data,
processData: false,
contentType: false,
type: 'PUT',
dataType: 'json',
success: function(data, textStatus, jqXHR) {
//Processing result here
},
error: function(jqXHR, textStatus, errorThrown) {
//Processing result here
}
});
但是,我尝试了以下场景:
- Works:Formdata 没有文件,添加 _METHOD=PUT 并将 $.ajax 设置为类型:POST
- 不起作用(php 没有收到 PUT 数据):没有文件的 Formdata,设置 $.ajax 为 type:PUT
- 不起作用(方法保持 POST):带有文件的 Formdata,添加 _METHOD=put 并将 $.ajax 设置为类型:POST
- 不起作用(php 没有收到 PUT 数据):带有文件的 Formdata,将 $.ajax 设置为 type:PUT
我有什么遗漏的吗?
应用程序要求它使用 PUT 请求,因此不可能使用 POST 请求。
【问题讨论】:
-
请指定
doesn't work。服务器是否没有正确响应?还是 ajax 没有收到正确的响应? -
服务器未正确接收(或解析)PUT 数据,但 chrome 控制台中的请求正文清楚地显示它已正确生成
-
如果服务器收到有效的 PUT 请求但可能无法正常工作,我们现在究竟如何帮助您解决问题?我想我们每个人都想成为一个有远见的人,但我们不是。
-
好吧,例如告诉我 jQuery 是否正确,或者是否有人在 Slim 框架中有相同的经验。任何非居高临下的东西。
-
您使用的是什么 Web 服务器以及如何为 PHP 提供服务(
php-fpm、mod_php)?