2

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 を試してみましたが、これは役に立ちませんでした

また、同様の問題で 2 次元配列を渡す必要があります。これは可能ですか?

4

3 に答える 3

2

[] リテラルまたは new Array() を使用して Array インスタンスを作成していると仮定します。探しているデータ構造は JavaScript ではオブジェクトと呼ばれますが、他の環境では連想配列、ハッシュマップ、または辞書と呼ばれることもあります。JavaScript でオブジェクトを作成して埋めるには、次のようにします。

var item = {};
item["sku"] = "abc";
item["title"] = "product";
于 2012-05-02T21:32:13.217 に答える
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));
?>
于 2012-05-02T21:31:20.000 に答える
1

PHPjson_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
}
于 2012-05-02T21:28:22.937 に答える