您好 stackoverflow 社区,我需要有关 JavaScript 的帮助。如何传输 id 为 kasce 的数组?
当我在 ajax_import.php
文件中打印数组时,它什么也不打印。所以我的数组可能是空的。
这是我的代码:
function SubmitImp() {
var import_tasken = document.getElementById("import_tasken");
//import_tasken.style.display = "none";
var kasce = document.getElementsByName("impTaskCh");
var array = "";
for (i = 0; i < kasce.length; i++) {
array[i] = kasce[i].getAttribute('id');
}
$.ajax({
type: "POST",
url: 'modules/projects/ajax/ajax_import.php',
data: {
data: array,
},
success: function(data)
{
alert("Viskas ok!");
}
});
}
最佳答案
有几个问题。
首先,您发送的不是一个数组,而是一个空白字符串。在这里,您将一个字符串放入 array
中:
var array = "";
稍后,您可以执行以下操作:
array[i] = kasce[i].getAttribute('id');
...它试图为字符串的单个字符分配一个新值。你不能这样做,字符串在 JavaScript 中是不可变的;该行最终根本没有改变字符串。
array[i]
是字符串中的单个字符。您正在尝试为其分配一个字符串。
要使 array
成为数组,请使用:
var array = [];
接下来,这可能不是问题,在这里:
data: {
data: array,
}
...您告诉 jQuery 发送一个名为 data
的 URI 编码参数,其值为 array
。 jQuery 将在 array
上调用 toString
,真正的数组最终会成为 Array#join
。这很可能就是您想要的,您会得到这样的结果:
firstId,secondId,thirdId
您的 PHP 应该将其查找为 $_POST['data']
。
旁注:您正在成为 The Horror of Implicit Globals 的牺牲品因为你从未声明你的 i
变量。您想要声明它。
关于javascript - 通过ajax发送数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32134812/