重复每行jquery的代码

时间:2014-12-27 17:28:40

标签: jquery html ajax json model-view-controller

希望你能帮助我,我觉得你很容易解决这个问题:)。

我有以下jquery脚本:

    $('#addpricebtn').click(function () {



    $('.stidinput').each(function (i) {

        $.ajax({
            type: 'GET',
            url: '/Builder/rateretriever',
            datatype: 'json',
            data: { id: $('.stidinput').val() },
            success: function (result) {
                $('.categoryinput').html(result[i].category + ' - ' + result[i].subcategory + ' - ' + result[i].site);
                $('.formatinput').html(result[i].format);
                $('.exclusiveinput').html(result[i].exclusive);
                $('.cminput').html(result[i].costmethod);
            }
        });
    });
});

这个脚本有效,但只查看第一个填充的id,我想使用每行的代码,这就是为什么我有下面的代码...(我想使用相同的请求与不同在用户填写的每一行上都有id :))

$('#addpricebtn').click(function () {



    $('.stidinput').each(function (i) {

        var inputer = $('.stidinput').val();

        $.ajax({
            type: 'GET',
            url: '/Builder/rateretriever',
            datatype: 'json',
            data: { id: inputer[i] },
            success: function (result) {
                $('.categoryinput').html(result[i].category + ' - ' + result[i].subcategory + ' - ' + result[i].site);
                $('.formatinput').html(result[i].format);
                $('.exclusiveinput').html(result[i].exclusive);
                $('.cminput').html(result[i].costmethod);
            }
        });
    });
});

希望你能帮忙:)。

修改

当然,我有以下HTML代码:

<div class="io-container">
<table id="iolist">
    <tr>
        <th>ID</th>
        <th>Name:</th>
        <th>Format:</th>
        <th>Exclusive:</th>
        <th>Start:</th>
        <th>End:</th>
        <th>Cost Method:</th>
        <th>Target 1:</th>
        <th>Target 2:</th>
        <th>Frequency Cap:</th>
        <th>RC Price:</th>
        <th>Impressions:</th>
        <th>Gross Budget Discount:</th>
        <th>Net Net Budget</th>
        <th>Net eCPM</th>
    </tr>
   <tr>
        <td><input class="stidinput" name="stidinput" type="text" /></td>
        <td class="categoryinput"></td>
        <td class="formatinput"></td>
        <td class="exclusiveinput"></td>
        <td>01/01/2015</td>
        <td>01/01/2015</td>
        <td class="cminput"></td>
        <td></td>
        <td></td>
        <td></td>
        <td class="rcinput"></td>
        <td class="impsinput"></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>

</table>

<button id="addrowbtn">AddRow</button>
<button id="addpricebtn">AddPrice</button>

用户应该能够添加一行并使用类 stidinput 填充单元格,然后用户单击 addpricebtn 按钮,该按钮将从中检索JSON格式的数据库。我需要找到一种方法,jquery脚本检索所有STID并填写从数据库收到的相应信息,而不仅仅是第一个......

谢谢,

1 个答案:

答案 0 :(得分:0)

显然,你的错误是你在每次迭代中填充第一个TR行。我想你首先要抓住每个stidinput的父行,并用相应的数据填充它。它可能看起来像跟随(我认为它不需要使用索引):

$('#addpricebtn').click(function () {
    $('.stidinput').each(function (i) {

        var inputer = $(this).val();
        var currentRow = $(this).parent();

        $.ajax({
            type: 'GET',
            url: '/Builder/rateretriever',
            datatype: 'json',
            data: { id: inputer },
            success: function (result) {
                currentRow.find('.categoryinput').html(result.category + ' - ' + result.subcategory + ' - ' + result.site);
                currentRow.find('.formatinput').html(result.format);
                currentRow.find('.exclusiveinput').html(result.exclusive);
                currentRow.find('.cminput').html(result.costmethod);
            }
        });
    });
});

此外,您可以在调用ajax之前添加if...是否已填充该行以防止重复填充行和过度调用服务器脚本。