我试图通过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,但这并没有帮助
另外,我需要在类似的事情中传递二维数组。这可能吗?
答案 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
}