每个jQuery:数组都没有填充

时间:2015-07-18 12:35:25

标签: javascript php jquery arrays

我正在使用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

之后的数组

enter image description here

但是 - 不幸的是 - 这就是PHP收到的所有内容(var_dump($_POST);):

array(2) {
  ["action"]=>
  string(3) "add"
  ["product"]=>
  string(1) "2"
}

缺少数据字段。它的工作原理 - 如前所述 - 如果数据只是一个字符串,甚至是一个带有字母数字值的数组。

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);
});