不能在循环中使用FormData.append吗?

时间:2019-05-20 06:27:06

标签: javascript form-data

这是一个ajax调用,它能够获取当前时间并以用户所需的格式更改为字符串。 因为我想封装ajax调用,所以我制作了一个包含键值对的数组。我想使用formData.append来放置参数以进行Ajax调用。 我写了下面的代码,但是当我传递一个只有1个对象的数组时, 执行formdata.append之后,formdata仍然为空,并且使我的ajax调用无法获得理想的结果。 我能知道我哪里错了吗?

var Data=[{ "NAME": "DATEFORMAT", "VALUE": "yyyy/MM/dd HH:mm:ss" }];
var formData = new FormData();
for (var i = 0; i < Data.length; i += 1) {
    var x=Data[i];
    formData.append(x.NAME, x.VALUE);
}
$.ajax({
    url: "SomeFunction.ashx",
    headers: {
        "X-Requested-With": "XMLHttpRequest",
        "Requested-Type": "DateTimeToString"
    },
    method: "post",
    data: formData,
    processData: false,
    contentType: false,
    success: function (retdata) {
        resolve(retdata);
    },
    error: function (err) {
        reject(err);
    }
});

1 个答案:

答案 0 :(得分:0)

正如我在评论中提到的那样,您的 for循环formData可以正常工作。

如果在 for循环中添加console.log(formData.get(x.NAME)),则会看到数据已成功添加到formData元素中。

所以您的问题出在您的 ajax请求中。

var Data=[{ "NAME": "DATEFORMAT", "VALUE": "yyyy/MM/dd HH:mm:ss" }];
var formData = new FormData();
for (var i = 0; i < Data.length; i += 1) {
    var x=Data[i];
    formData.append(x.NAME, x.VALUE);
    console.log(formData.get(x.NAME));
}