0

クリックハンドラ

$('.to-pay').click(function(e)
{
   var finputs=$('form.inputs-form').serialize();
   alert(finputs);
   $.ajax(
   {
       url: "URL_HERE",
       type:"POST",
       data: finputs,
       success: function(data)
       {
      $('.another-div').html(data);
       }
   });
});

PHP部分

$pid=$_POST['pid'];
$size=$_POST['product-size'];
$quantity=$_POST['quantity'];


foreach($pid as $key => $prod_id)
{
  echo "This part is called";
  echo $prod_id." of size ".$size[$key]." ".$quantity[$key]." numbers.";
}

問題は PHP 側にあります。foreach()パーツが実行されていません。私が使用してチェックしたjQuery側alert()では、データは次のようになります。

pid%5B%5D=1&商品サイズ%5B%5D=100&数量%5B%5D=10&pid%5B%5D=2&商品サイズ%5B%5D=150&数量%5B%5D=20

PHP側の問題は何ですか?

4

2 に答える 2

0

おい、あなたが得ているアラートは文字列です

.serialize() 説明: 一連のフォーム要素を送信用の文字列としてエンコードします。

解決策: 代わりに .serializeArray() を使用してください

$('form.inputs-form').serializeArray();

これを参照してください http://api.jquery.com/serializeArray/

次に、php 側でそれに応じてコードを変更します。

または
、PHP 側で $_POST['data'] を分解して、それを php 配列にしてから、foreach を使用して配列を反復処理します。

于 2013-08-27T06:06:52.150 に答える