javascript - 追加表单数据对象?

标签 javascript php jquery ajax

我使用表单数据将图像发送到服务器。

//create form data from form
var formData = new FormData($('#my-form')[0]);

//append the image
formData.append('file', myFile);

//add data from crop plugin
formData.append('file-data', cropData);

//POST
$.ajax({
        url: /upload,
        type: 'POST',
        dataType: 'json',
        processData: false,
        contentType: false,
        data: formData
    })

当我尝试从裁剪插件添加数据时出现问题,它记录正​​常:

Object {x: 140, y: 273.49999999999994, width: 520, height: 520, rotate: 0}

但是一旦在 PHP 中发布,它只会转储为没有属性的空数组。

我哪里出错了?

最佳答案

您无法将普通对象作为第二个参数传递给 FormData 对象上的 append。 (嗯,你可以,但它会被字符串化,这通常会给你“[object Object]”)。

需要分别添加每条数据。您可以使用 PHP 的命名约定在另一端获取数组。

for (var prop in cropData) {
    if (cropData.hasOwnProperty(prop)) {
        formData.append('file-data[' + prop + ']', cropData[prop]);
    }
}

关于javascript - 追加表单数据对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29489400/

相关文章:

javascript - 如何从jtemplate中的javascript读取数据

javascript - 如果这个值没有在数据中声明,为什么它是 react 性的?

PHP 多维数组 - 计算实例数

javascript - 所有 div 中显示的错误消息

javascript - 是否有一个 API 可以获取位置并查找其坐标?

javascript - 测量全局命名空间的污染

javascript - 生成一系列 Ascii 值

php - Symfony2中ACL和用户角色有什么区别

PHP 检查列是否已填充

javascript - Firefox 中未定义的函数