【问题标题】:Is it not possible to use FormData.append in a loop?不能循环使用 FormData.append 吗?
【发布时间】:2019-05-20 06:27:05
【问题描述】:

这是一个 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);
    }
});

【问题讨论】:

  • 您也可以添加您的Data 值吗?
  • [{ "NAME": "DATEFORMAT", "VALUE": "yyyy/MM/dd HH:mm:ss" }]
  • 你是如何检查这些值的?
  • 你没有在这里使用你的 FormData。你只是发送一个字符串,JSON.stringify(Data) 的结果。
  • @GaryLu 在formdata.append(x.NAME, x.VALUE) 之后添加console.log(formData.get(x.NAME)) 会发生什么?

标签: javascript form-data


【解决方案1】:

正如我在 cmets 中提到的,您的 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));
}

【讨论】:

    猜你喜欢
    • 2013-11-21
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 2023-01-24
    • 2011-09-29
    相关资源
    最近更新 更多