jquery ajax调用中的语法错误

时间:2013-04-12 11:44:40

标签: html jquery

我的 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网址会像这样

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}

但是由于不可预测的参数,我不能使用它。 任何方式我做了一些尝试,最终在语法error.code是这个

  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

我确信我犯了一些非常错误的东西。有人帮我这个

1 个答案:

答案 0 :(得分: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[]来为该特定参数编码数组值。请注意,实际上并没有为x-www-form-urlencoded数据传递具有相同键的多个值的已定义标准,但这适用于PHP。您应该考虑更改产品的添加方式 - 也许是以逗号分隔的列表?