1

ユーザーが商品を注文できるサイトがあります。現在、さまざまな情報を PHP スクリプトに送信して、そこからデータベースに追加できるようにしています。

$.ajax ({
  type: "POST",
  url: "./pay.php",
  dataType: "json",
  data: {
    "firstName" : firstName,
    "lastName" : lastName,
    "email" : email,
    "price" : price
  }  
});

これはうまく機能しています。ここで、注文された製品の ID と数量を含む 2 つの配列を送信したいと思います。特定の時点でいくつの製品があるか、またはその ID が何であるかがわからないため、上記のように個別のアイテムとして追加することはできません。現在、私は製品IDとそれに対応する数量を別々の配列に持っています:

productIds: ["6", "1"]
quantities: ["1", "4"]

これらの配列を残りの変数と一緒に PHP スクリプトに送信して、これらの配列をループ処理し、情報をデータベースに挿入できるようにします。

こんなことしていいの?

$.ajax ({
      type: "POST",
      url: "./pay.php",
      dataType: "json",
      data: {
        "firstName" : firstName,
        "lastName" : lastName,
        "email" : email,
        "price" : price,
        "productIds" : productIds,
        "quantities" : quantities
      }  
 });

現在、PHP スクリプトで次のようにアクセスできる非配列変数:

$email = $_POST['email'];
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$price = $_POST['price'];

PHPスクリプトのproductIds配列を次のようにループしたいのですが、何か足りないと思います:

$i = 1;
foreach ($_POST['productIds'] as $value) {
  $sql = 'INSERT INTO orders SET
  product_id = "'.$_POST['productIds'][$i].'",
  quantity = "'.$_POST['quantities'][$i].'"';

  $result = $conn->query($sql);
  $i++;
}

Ajax を使用して、他の非配列データとともに JavaScript 配列を PHP スクリプトに送信するにはどうすればよいですか?

4

3 に答える 3

1

フォーム データを収集しているときに、JavaScript オブジェクトを形成できます。そのオブジェクトを直接 PHP に送信します。そのようなもの:

//Your object could look like this
var data = {
    name: 'blah',
    product_data: {
        '<some product id>': '<some product name>',
        '<another product id>': '<another product name>'
    }
}

product_dataPHP 側では、 $_POST からのキーによって商品データに連想配列としてアクセスできますarray。フォームデータを収集する方法はあなた次第です。

アップデート:

$products = $_POST['product_data'];
foreach($products as $product_id => $product_name){
    echo $product_id.', '.$product_name;
}
于 2013-04-14T02:09:39.633 に答える
0

PHP は配列パラメーターを受け入れますが、受け入れ可能な形式でパラメーターを送信する必要があります。

<?php
    $str = "first=value&arr[]=foo+bar&arr[]=baz";
    parse_str($str);
    echo $first;  // value
    echo $arr[0]; // foo bar
    echo $arr[1]; // baz

    parse_str($str, $output);
    echo $output['first'];  // value
    echo $output['arr'][0]; // foo bar
    echo $output['arr'][1]; // baz
?>

$_POSTHTTP 投稿の場合、変数を介して配列にアクセスするだけです。

JavaScript 側では、コードは次のようになります。

$.post(url, {'arr[]': array}, function(data){
    // do something with received data
});
于 2013-04-14T02:08:40.603 に答える