2012-05-07 12 views
0

serialize()関数を使用してフォームのすべてのフィールドを取得しています。ごくまれに、カートを保存した後に1つのアイテムしか残されていないと顧客は言います。調査の結果、一部のユーザーにとってserialize()関数は、items[ITEMNUM] = qtyという最後のアイテム配列のみを送信していることが判明しました。.serialize()はすべてのブラウザで一貫していません

HTML:

<form id="cartitems" action="self"> 
    <table width="98%" border="0"> 
     <tr> 
      <td style=" font-size:.9em;">title</td> 
      <td width="30"> <input name="items[AH33.3600]" class="qty" value="1" /></td> 
      <td width="30" nowrap="nowrap" style="padding-right:10px; border-bottom:1px solid #CCC;">Total</td> 
     </tr> 
     <tr> 
      <td style=" font-size:.9em;">title</td> 
      <td width="30"> <input name="items[PNP-A00SVR30]" class="qty" value="1" /></td> 
      <td width="30" nowrap="nowrap" style="padding-right:10px; border-bottom:1px solid #CCC;">Total</td> 
     </tr> 
     <tr> 
      <td style=" font-size:.9em;">title</td> 
      <td width="30"> <input name="items[A4882+++++107+5X12]" class="qty" value="1" /></td> 
      <td width="30" nowrap="nowrap" style="padding-right:10px; border-bottom:1px solid #CCC;">Total</td> 
     </tr> 
    </table> 
</form> 

はJavaScript:

var subform = $("#cartitems").serialize(); 
$.ajax({ 
    beforeSend: function() {   
     $('#cartitems').slideUp().queue(function() { 
      $(this).dequeue(); 
      $('#cartitems').html(' Please wait... Cart Loading').show(); 
     }); 
    }, 
    url: "/order/ajax/cart", 
    type: "POST", 
    cache: false, 
    data: subform, 
    dataType: "html", 
    success: function(html){ 
     alert('info saved'); 
    } 
}); 

私は誰もが問題を見ないのFirefox 7

を使用していたと話した最新の顧客?

+2

私は唯一のカートの形で1つの入力を参照して、どのように多く存在すべきですか? –

+0

申し訳ありませんが、行タグはforeach()内にあります。番号は異なりますが、問題を抱える顧客には複数のものがあります。時には1つ2つのアイテムだけがそれを作り、残りは落とされることがあります。 – RichardW11

+0

マークアップが壊れたコードなしで表示するのに役立ちます。ビューソース/デバッガからマークアップをコピーします。 – epascarello

答えて

0

私はいくつかのブラウザでこれをテストし、正常に動作するように見えた - http://jsfiddle.net/z6P4x/

+0

ええ、それも私が考えたものです。しかし、それはいくつかの奇妙なブラウザのバージョンのように思える、私の配列の最後の入力をつかむだけです。私は複製できませんでしたが、古いブラウザを使用しているお客様には起こっています。また、配列内の項目番号をエンコードするためにurlencode()が使用されているのだろうかと思います。 – RichardW11

+0

私は、フォームの下部に隠れたフィールドを探して問題を緩和したようです。それが提出されない場合、私はユーザーにエラーを与えます。これはユーザーの苦情の95%を解決したようです。私はあなたの時間の答えとしてこれをマークします。 – RichardW11

関連する問題