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

Sending arrays with alphanumeric indexes names through ajax

本文关键字:索引 数字 数组 ajax 通过      更新时间:2023-09-26

我正在尝试通过jquery ajax调用传递数组。但是,我需要在其上使用描述性索引,例如。项目["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,但这没有帮助

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

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

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

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

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

你需要仔细看看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
}