使用FormData的JQuery ajax POST不会发送任何值

时间:2017-11-06 14:13:33

标签: javascript jquery ajax form-data cropperjs

似乎有很多关于此的帖子,但无法在其中找到解决方案,而且我已经碰到了一堵砖墙。帮助,亲爱的Stackers!

我正在编写一些代码,让用户可以选择个人资料图片,裁剪,然后将裁剪后的图像保存在服务器上。我正在使用Cropper.js库来处理实际的裁剪并确定它正常工作,因为我可以使用以下代码显示裁剪:

var imageData = cropper.getCroppedCanvas().toDataURL();
var profileimage = document.getElementById('myProfilePhoto');
profileimage.src = imageData;

现在我想将裁剪后的图像发送到服务器,最好的方法似乎是创建一个blob和Ajax,然后通过php脚本来处理它。

cropper.getCroppedCanvas().toBlob(function (blob) {
    var formData = new FormData();
    formData.append('file', blob);
    formData.append('uuid', '{a unique identifier}');
    $.ajax({
         type:           'POST',
         url:            '{the php script}',
         data:           formData,
         processData:    false,
         contentType:    false,
         success: function (response) {
             console.log('Upload success: '+response);
         },
         error: function () {
             console.log('Upload error');
         }
    });
});

在这个阶段,我只是将我的php脚本发送到var_dump($ _ REQUEST),所以我可以在控制台中看到脚本认为它的内容。但是,响应只是发回默认的$ _REQUEST对象,如PHPSESSID,没有文件或uuid输入。

我做错了什么?

提前感谢任何指示。

2 个答案:

答案 0 :(得分:0)

如果您是通过发帖发送,以便查看请求放置此代码

 var formData = new FormData();
formData.append('file', blob);
formData.append('uuid', '{a unique identifier}');
formData.append('_method', 'PATCH'); <---add this and you're good to go

答案 1 :(得分:0)

所以答案很简单,但令人沮丧地很难找到。

我的服务器有一个.htaccess重写规则,它会自动更改www。地址到非www版本,显然我已经愚蠢到包括www。在我调用的URL中,似乎足以在这些情况下剥离$ _POST数据。

所以FormData()和blob在这里都是红色的鲱鱼 - 它只是一个重定向,这是原因。