如何使用 JQuery 使用 Ajax 函数更新每个 div 元素

Posted

技术标签:

【中文标题】如何使用 JQuery 使用 Ajax 函数更新每个 div 元素【英文标题】:How to update each div element with Ajax function using JQuery 【发布时间】:2021-07-31 22:24:42 【问题描述】:

我是 JQuery 新手,我有一个 Ajax 函数来更新 select 选项。 Ajax 在我的第一个 Div 上运行良好。但是当我克隆 div 并运行 Ajax 时,再次调用它只更新第一个 Div 元素,而不是克隆的元素。我是壁橱的新手……等等。请帮助我,这样当我调用 Ajax 时,它会更新克隆的 div(current div) 元素。

这是我的 ajax 函数:

function acct_dbox()  
   #var that = $(this)#
$.ajax(
    
        type: "GET",
        url: "/waccounts/getaccounts",
        dataType: "json",
        data: 
            #'acctlevel': $(this).val(),#
            'csrfmiddlewaretoken': 'csrf_token'
        ,
        success: function (data) 
           $.each(data, function(index, item) 
                if (item.length > 0)
              console.log('test', item[0].AcctCode);
              console.log('test', item[0].AcctName);
              #$("#id_accountcode  option").remove();#
              $.each(item, function(index1, item1) 
                console.log(item1.id);
                console.log(item1.AcctCode);
                console.log(item1.AcctName);
                $("#id_accountcode").append($('<option/>',

                #$("#id_accountcode").append($('<option/>', #
                  value: item1.AcctCode,
                  text: item1.AcctName

            ));
  )

 $( document ).ready(function() 
    acct_dbox();
    var original_external_int_div = document.getElementById('account_list'); 
    //Div to Clone
    var clone = original_external_int_div.cloneNode(true); // "deep" clone
    original_external_int_div.parentNode.append(clone);

    acct_dbox();  # (it is updating the first div again - not cloned one)

);

我的html是:

 % extends 'wstore_base_generic.html' %

 % block content %
 <form action="" method="post" class="w-auto" id="new_trans_form" 
 xmlns:>
<div class="row mt-1 mb-4" >
    <div class="col-md-12">
        <div>
            <div class="headerctr">
                <h3>JV</h3>
                <!-- <div> -->
                <!-- <h3 > -->

                <!-- </h3> -->
            </div>
            <div class="card-body" >
                % csrf_token %
                <div 38rem class="row style= width:18">
                    <div class="col">
                        <label>Transaction Date</label>
                        <input type="date" class="form-control" name=" 
 form.fh_dt.name" value="current_date"
                            readonly>
                        % if form.fh_dt.errors %
                        % for error in form.fh_dt.errors  %
                        <small class="text-danger">error</small>
                        % endfor %
                        % endif %
                    </div>
                    <div class="col-sm" >
                        <label>Transaction Number</label>
                        <input type="number" class="form-control" name=" 
 form.fh_no.name"
                            value="transaction_number" readonly>
                        % if form.fh_no.errors %
                        % for error in form.fh_no.errors  %
                        <small class="text-danger">error</small>
                        % endfor %
                        % endif %
                    </div>
                    <div class="col">

                        <input type="hidden" class="form-control" name=" 
   form.fh_type.name" required readonly
                            value="JV">
                        % if form.fh_type.errors %
                        % for error in form.fh_type.errors  %
                        <small class="text-danger">error</small>
                        % endfor %
                        % endif %

                        <label>Transaction Ref.</label>
                        <input type="text" class="form-control" name=" 
 form.fh_ref.name" required
                            value="Ref.">
                        % if form.fh_ref.errors %
                        % for error in form.fh_ref.errors  %
                        <small class="text-danger">error</small>
                        % endfor %
                        % endif %
                    </div>
                </div>
                <div class="row mt-0">
                    <div class="col">
                        <label>Transaction Code</label>
                        <input type="text" class="form-control" name=" 
 form.fh_code.name" required readonly
                            value="JV">
                        % if form.fh_code.errors %
                        % for error in form.fh_code.errors  %
                        <small class="text-danger">error</small>
                        % endfor %
                        % endif %
                    </div>
                    <div class="col">
                        <label>Transaction Detail</label>
                        <input type="text" class="form-control" name=" 
 form.fh_detail.name" required
                            value="Detail">
                        % if form.fh_detail.errors %
                        % for error in form.fh_detail.errors  %
                        <small class="text-danger">error</small>
                        % endfor %
                        % endif %
                    </div>
                    <div class="col">
                        <label>Transaction UserCode</label>
                        <input type="text" class="form-control" name=" 
 form.fh_user_code.name" required
                            value="% if form.fh_user_code.value % 
  form.fh_user_code.value% else %request.user.username% endif %">
                        % if form.fh_user_code.errors %
                        % for error in fh_user_code.errors  %
                        <small class="text-danger">error</small>
                        % endfor %
                        % endif %
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="col-md-12 mt-0">
        <div class="card shadow">
            <div class="card-header text-center">
                <h3 class="headerctr">
                    Item Details
                </h3>
            </div>
            <div class="card-body">
                % csrf_token %
                <table class="">
                    <thead class="thead-light">
                        <tr>
                            <th>Code</th>
                            <th  class = "text-danger">Account</th>
                            <th  class = "text-danger">Debits</th>
                            <th class="text-success">Credits</th>
                            <th  class = "text-warning">Description</th>
                            <th  class = "text-warning">Tax</th>
                        </tr>
                    </thead>
                    <tbody id="account_list" style="margin-bottom: 0">
                        <tr>
                            <td>
                                <select name="acct_code" class="form-control 
   fh_code" id="id_accountcode">
                                         <option  value="SELECT" 
  selected="selected">---SELECT---</option>
                                         required></select>
                            </td>
                             <td>
                                <input type="text" name="acct_name" 
   class="form-control fh_name"
                                    placeholder="Acct Code" readonly>
                            </td>
                            <td>
                               <input type="number" name="acct_debit" 
class="form-control fh_debit"
                                    placeholder=" " >
                            </td>
                            <td>
                                <input type="number" class="form-control 
    fh_credit" name="acct_credit"
                                    placeholder=" ">
                            </td>
                            <td>                                    
                                <input type="text" class="form-control 
   fh_detail" placeholder="Description"
                               name="acct_descript"     >
                            </td>
                             <td>
                                <input type="number" class="form-control 
  fh_tax" name="acct_tax"
                                    placeholder=" ">
                            </td>
                            <td>
                                <div class="btn-group">
                                    <button type="button" id="btnadd" 
 class="btn add_new_row" title="Add">
                                        <i class="fas fa-plus-square"></i>
                                    </button>
                                    <button type="button" class="btn 
 delete_row" title="Delete">
                                        <i class="fas fa-trash"></i>
                                    </button>
                                </div>
                            </td>
                        </tr>
                    </tbody>
                    <tfoot>
                        <tr>              
                            <td></td>
                            <td></td>                                 
                            <td class = "text-success">Total Quantity: 
 <strong id="final_quantity">0</strong></td>
                            <td></td>                                                 
                            <td class = "text-success"> Total Price: <strong 
 id="final_price">0</strong></td>
                        </tr>
                    </tfoot>
                </table>                    
            </div>
            <div class="col-md-12 mb-1">
                <div class="btn-group">
                    <a  href="% url 'transactions' transtype='INV' 
 posted='ALL' %"  class="btn btn-info mr-2" >Cancel</a>

                    <input type="submit" class="btn btn-info submit_form" 
  name="save_next" value="Save&Print">&nbsp;
                </div>
            </div>
        </div>
    </div>
</div>
 </form>
  % endblock %

【问题讨论】:

同时显示 html。 html 已添加到我的问题中。谢谢。 你正在克隆 tbody ?此外,会有多个具有相同 id 的元素,这就是为什么只有第一个有效。 看看这个$("table tbody:last select[name=acct_code]").append(youroptionsto appendhere) 是否有效。另外,请删除所有重复的 id。 它只更新了最后一个选择;我做了如下更改: $("table tbody select[name=acct_code]").append($('',... 删除 --last-- 它更新所有行。请给出更正的答案标记“答案”谢谢 【参考方案1】:
 #$("#id_accountcode").append($('<option/>', #
              value: item1.AcctCode,
              text: item1.AcctName

我做了如下更改:

 $("table tbody select[name=acct_code]").append($('<option/>',

所有 div 选择都使用选项进行更新 - 感谢 swathi。

【讨论】:

以上是关于如何使用 JQuery 使用 Ajax 函数更新每个 div 元素的主要内容,如果未能解决你的问题,请参考以下文章

jquery+ajax实现表格修改行操作

使用 jQuery 的 $.ajax( ) 函数从 php 文件中获取 JSON 数据不起作用

如何利用jquery ajax实现循环的ajax请求

如何使用 AJAX 发布和更新 jQuery 序列化

JQuery Ajax 更新 MySQL 数据库,但没有运行成功函数

如何使用 ajax 和 jquery 更新特定的 div