0

私のHTMLはこのようなものです

<tbody>
    <tr>
        <td ><img src="" alt="close" /></td>
        <td><input type="hidden" name="addproducts" value="141420">141420</td>
        <td class="prd"><strong><a href=""></a></strong></td>
        <td><a rel="prettyPhoto" href=""><img src="" alt="Product"></a></td> 
    </tr>
    <tr>
        <td ><img src="" alt="close" /></td>
        <td><input type="hidden" name="addproducts" value="1213143">1213143</td>
        <td class="prd"><strong><a href=""></a></strong></td>
        <td><a rel="prettyPhoto" href=""><img src="" alt="Product"></a></td> 
    </tr>
    <tr>
        <td ><img src="" alt="close" /></td>
        <td><input type="hidden" name="addproducts" value="242424">242424</td>
        <td class="prd"><strong><a href=""></a></strong></td>
        <td><a rel="prettyPhoto" href=""><img src="" alt="Product"></a></td> 
    </tr>
</tbody>

これから addproducts という名前の非表示の入力をすべて選択し、ajax 呼び出しに追加します。問題は、コードが実行される前に要素がいくつあるか予測できないことです。私が作ろうとしているajax URLはこのようになります

http://mydomain.com?addproducts=141420&q141420=16&addproducts=X945X2MG&qX945X2MG=1&addproducts=8382355&q8382355=10&addproducts=146353&q146353=3

URLの特定のパラメータの私の通常のコードは、このようなものになります

  ajaxManager.add(({
    type: 'GET', url: '/ajaxhandler', data: { addproducts: X945X2MG,qX945X2MG:1}

しかし、ここでは予測できないパラメータのためにこれを使用できません。いずれにせよ、構文エラーで終わったいくつかの試みを行った.コードはこれです

  ajaxManager.add(({
            $(this).parent().parent().find(".antal").find("input:hidden[name='addproducts']").map(function () {
                 return
            type: 'GET', data: {addproducts:this.value,'&q'+$(this).val():$(this).next().val()}

編集: Alnitak の投稿から、これを編集しようとしました。新しいコード

 var data = $(this).parent().parent().find(".antal")
          .find("input:hidden[name='addproducts']").map(function () {
                 return
               { addproducts: this.value}

                data['q' + $(this).val()] = $(this).next().val();
                   }).get().join(',')

  ajaxManager.add(({
            type: 'GET', data: data

残念ながら、私のajax呼び出しは次のようになりました

http://mydomain.com?_=1365768440633

私は何かひどく間違ったことをしたと確信しています.Cany one help me

4

1 に答える 1

2

既知のキーを使用してオブジェクト リテラルを作成しobj[key]、変数キーの構文を使用する必要があります。

var data = { 'addproducts[]': [] };

$(this).parent().parent().find(".antal")
       .find("input:hidden[name='addproducts']")
       .each(function () {
            data['addproducts[]'].push(this.value);
            data['q' + this.value] = $(this).next().val();
       });

$.ajax({
    ...,
    data: data
});

特定のパラメータの値の配列addproducts[]をエンコードできるようにするために を使用していることに注意してください。実際には、データの同じキーを持つ複数の値を渡すための定義された標準はありませんが、これは PHP で機能します。製品を追加する方法を変更することを検討する必要があります。おそらくカンマ区切りのリストですか?x-www-form-urlencoded

于 2013-04-12T11:55:49.230 に答える