将 JavaScript 数组字符串化以发送到 PHP 脚本

Stringify-ing a JavaScript array to send to PHP script

我在 JavaScript 中有一个多维数组,我需要将它发送到 PHP 脚本。

下面是我目前正在做的发送数据,但是发送的是空白数据。

我已将范围缩小到我在图像中记录的内容。

还有其他发送方式吗?为什么 JSON.stringify 显示为空白?

console.log(results);
console.log(JSON.stringify(results));

var form_data = new FormData();
form_data.append("results", JSON.stringify(results));

fetch('myfile.php', {
    method: 'POST',
    body: form_data
})

编辑

var response_object = {"1": response1, "2": response2};
var test_object = {[current_test]: response_object};
var section_object = {[current_section]: test_object};
results = { ...results, ...section_object }

这是因为您没有向数组添加元素,而只是向其附加属性,例如 'section1''test1',您应该改为在某些对象上声明这些属性,然后将这些对象插入数组,在下面的示例中查看会发生什么以及如何避免这种情况:

let result = [];

// BAD
result['section1'] = [];
result['section1']['test1'] = [, "2", "3"];
result['section1']['test2'] = [, "4", "5"];
result['section2'] = [];
result['section2']['test1'] = [, "2", "3"];
result['section2']['test2'] = [, "4", "5"];

console.log('BAD', JSON.stringify(result));

// GOOD
result = [{
  'section1': [
    {'test1': [, "2", "3"]},
    {'test2': [, "4", "5"]}
  ]
}, {
  'section2': [
    {'test1': [, "2", "3"]},
    {'test2': [, "4", "5"]}
  ]
}];

console.log('GOOD', JSON.stringify(result));

(代表问题作者发布了一个答案,将其移动到答案space)。

最终工作代码:

var response_object = {"1": response1, "2": response2};
var test_object = {[current_test]: response_object};
if(results[current_section]){
    var section_object = { ...results[current_section], ...test_object};
    results[current_section] = section_object;
}else{
    var section_object = {[current_section]: test_object};
    results = { ...results, ...section_object};
}