通过ajax发送带有字母数字索引名称的数组

时间:2012-05-02 21:22:28

标签: javascript jquery ajax arrays multidimensional-array

我试图通过jquery ajax调用传递一个数组。但是,我需要在其上使用描述性索引,例如。 item [" sku"] =' abc';

如果我创建了以下数组:

item[1] = "abc";
item[2] = "def";

并将其传递给ajax调用,我在php端获得了一个正确的数组

$.ajax({
    type: "POST",
    url: "/ajax/add_to_cart.php",
    data: {items: item},
    success: function(msg){ }
}); 

然而,创建像那样的数组

item["sku"] = "abc";
item["title"] = "product";

在php端没有产生任何东西

是否有推动此类阵列通过的技巧?我已尝试使用jquery stringify,但这并没有帮助

另外,我需要在类似的事情中传递二维数组。这可能吗?

3 个答案:

答案 0 :(得分:2)

您可以构建和发送收集的产品数据,如下所示:

var item = [{sku:"abc", title:"product1"}, {sku:"def", title:"product2"}, {sku:"ghi", title:"product3"}];

$.ajax({          
    type: "POST",
    url: "/ajax/add_to_cart.php",
    data: {items: JSON.stringify(item)},
    dataType: "json",
    success: function(msg){ }
});

json_decode()将帮助你完成PHP的结束:

<?php
    var_dump(json_decode($_REQUEST['items'], true));
?>

答案 1 :(得分:2)

我假设您正在使用[] literal或new Array()创建一个Array实例。您正在寻找的数据结构在JavaScript中称为Object,在其他环境中也可称为关联数组,哈希映射或字典。要在JavaScript中创建和填充对象,您可以执行以下操作:

var item = {};
item["sku"] = "abc";
item["title"] = "product";

答案 2 :(得分:1)

您需要仔细研究PHP的json_encode()json_decode()函数:http://php.net/manual/en/function.json-decode.php(真正的整个库会有所帮助)以及jQuery的$.getJSON()$.post()个函数:http://api.jquery.com/jQuery.post/

<?php

$items_array = json_decode( $_REQUEST['items'], true );

foreach ( $items_array as $key=>$value ){
    // $key = 'sku', 'title', etc.
    // $value = 'abc', 'product', etc.
    // $value might include array( 'key'=>'value', 'key'=>'value' ) when multidimensional
}