作者:hedongsheng | 来源:互联网 | 2024-12-10 17:23
我有这种ajax
$.ajax({
type: "POST",url: "bee_sesi_edit.php",data:
'serv_ruang='+ serv_ruangx
+'&who='+names
+'&sesi_d1='+ sesi_d1
+'&sesi_d2='+ sesi_d2
+'&sesi_d3='+ sesi_d3
+'&sesi_d4='+ sesi_d4
+'&sesi_d5='+ sesi_d5
+'&sesi_d6='+ sesi_d6
+'&sesi_d7='+ sesi_d7
+'&sesi_d8='+ sesi_d8
+'&sesi_d9='+ sesi_d9
+'&sesi_d10='+ sesi_d10
+'&sesi_d11='+ sesi_d11,
我从getElementbyId获得了sesi_d *,迭代次数根据用户输入是动态的。
我没有运气尝试过
var jumlah_hari = document.getElementById('jum_hari').value;
$.ajax({
type: "POST",data: 'serv_ruang='+ serv_ruangx +'&who='+names +
for (var i = 1; i <= jumlah_hari; ++i) {
eval( '&sesi_d'+i+'=sesi_d' + i +);
}
有人可以告诉我让sesi_d *循环吗,可以这样做吗?
非常感谢
您可以使用window["nameOfVar"]
通过名称获取全局变量的值。
但是最好让对象具有属性而不是全局变量
// OP's request
const
serv_ruangx = "test",names = ["0","1"],sesi_d1 = "s0",sesi_d2 = "s2",sesi_d3 = "s3";
var data = {
serv_ruangx,who: names,...new Array(3).fill().reduce((obj,_,i) => {
const name = `sesi_d${i + 1}`
return { ...obj,[name]: window[name] };
},{})
}
$.post("bee_sesi_edit.php",{ data })
// Better way
const sesi_d = ["s0","s1","s3"];
var data = {
serv_ruangx,...sesi_d.reduce((obj,value,i) => ({ ...obj,[`sesi_d${i + 1}`]: value }),{ data })
,
假设您有一个可变的obj,如果您需要通过Javascript进行迭代,那么您只需要这样的东西:
for (var i = 1; obj['sesi_d' + i] !== undefined; i++) {
//Do something
}
或者,如果您需要在服务器端(PHP)上执行此操作,请执行以下操作:
for ($i = 1; isset($_POST['sesi_d'.$i]); $i++) {
//Do something
}
想法是元素具有相同的前缀,您只需要更改后缀中的索引即可。