Hello 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!");
}
});
}
答案 0 :(得分:2)
那里有几个问题。
首先,你没有发送一个数组,你发送一个空白字符串..在这里,你在array
中放了一个字符串:
var array = "";
稍后,你这样做:
array[i] = kasce[i].getAttribute('id');
...试图为字符串的单个字符分配新值。你不能这样做,字符串在JavaScript中是不可变的;该行最终没有改变字符串。
array[i]
是字符串中的单个字符。你正试图给它分配一个字符串。
要使array
成为数组,请使用:
var array = [];
接下来,这可能不是问题,在这里:
data: {
data: array,
}
...你告诉jQuery发送一个名为data
的URI编码参数,其值为array
。 jQuery将在toString
上调用array
,其中一个真正的数组最终为Array#join
。这可能是你想要的,你会得到这样的东西:
firstId,secondId,thirdId
您的PHP应该将其查找为$_POST['data']
。
旁注:您正在成为The Horror of Implicit Globals的牺牲品,因为您从未声明过i
变量。你想宣布它。