我正在使用jQuery选择器的each
函数来遍历元素。然后我只想将它们写入一个数组并发布它。这是我的代码:
if(domains.length === 0) {
var data = "skip";
} else {
var data = [];
$(".domain_row").each(function (index) {
var label = $(this).find('.r_label');
var myData = new Array();
myData['domain'] = $(this).find('.r_domain').html();
if(label.hasClass('label-success')) myData['type'] = "register";
data[index] = myData;
});
}
$.post("./index.php?domains_ajax", {
action: "add",
product: $("#product").val(),
data: data,
}, function (response) {
if(response == "true") window.location = "./cart.php?a=view";
else sweetAlert("Fehler!", "Leider ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.", "error");
});
如果data
是字符串skip
,则可行。但在else
案例中,它无效。这是直接在each
:
但是 - 不幸的是 - 这就是PHP收到的所有内容(var_dump($_POST);
):
array(2) {
["action"]=>
string(3) "add"
["product"]=>
string(1) "2"
}
缺少数据字段。它的工作原理 - 如前所述 - 如果数据只是一个字符串,甚至是一个带有字母数字值的数组。
答案 0 :(得分:1)
您可以使用jQuery.map()
,doc here代替“每个”,也可以使用push
代替arr[index] = value
。
var arr = [];
arr['a']='A';
arr['b']= 'B';
var data = [];
data.push(arr);
输出:
data
[Array[0]
a: "A"
b:"B"
length: 0
__proto__: Array[0]]
答案 1 :(得分:1)
在不知道html的情况下,我将做出一些假设,但尝试使用其他部分:
var data = [];
$(".domain_row").each(function () {
var label = $(this).contents().find('.r_label');
var myData = [];
myData['domain'] = $(this).contents().find('.r_domain').html();
if(label.hasClass('label-success')) myData['type'] = "register";
data.push(myData);
});