【问题标题】:How to change DIV contents in django app如何在 django 应用程序中更改 DIV 内容
【发布时间】:2013-03-09 03:15:35
【问题描述】:

我想通过 ajax GET 方法将 DIV 内容替换为新内容。 问题是整个页面正在加载到 DIV 中。但我只想加载新内容。

    function demoButton(){

        var forData = $('#For').text();
        var ageData = $('#Age').text();
        var occasionData = $('#Occasion').text();
        var URL ="http://127.0.0.1:8000/result/?age="+ ageData +"&occasion="+ occasionData +"&relationship="+ forData;

$.ajax({
    type: "GET",
    url: URL,
    success: function (response) {
        $("#testDIV").html(response);
    }
}); 
}

我的 DIV 块是:

<div id="testDIV"> 
 <ul id="products">
 {% for deal in deals %}
  <li data-price="{{ deal.price }}" > 
   <div class="product" >
          <div class="inner"> 
           <a href="/dailydeals/{{ deal.id }}/"><img src="{{ STATIC_URL }}/images/cimages/{{ deal.image }}" alt="image" style='width:177px;height:175px;' /> </a>
            <div class="similarProd"><a href="#">View similar product</a></div>
            <div class="heart"><a href="/usersl/{{user.id}}/{{ deal.id }}"><span>Engraved plaque fsor your<br>

              girlfriend</span></a></div>

            <div class="quickView"><a href="#qv_form{{ deal.id }}" id="fb_pop">QUICK VIEW</a></div>
            <div class="socialMedia"><a href="#"> <img src="/static/images/like.jpg" alt="Like" /></a></div>
          </div>
          <div class="description" style='width:177px;height:50px;'> <span class="price">{{ deal.price }}</span> {{ deal.description|safe }} <br />
           </div>
           <a href="/usersl/">Add to SL</a>
        </div>
                     </li>
   {% endfor %}
  </ul> 

        </div>

我正在开发一个基于 Django 的电子商务应用程序。我想用从服务器获取的内容替换 DIV 的内容,以响应对服务器的 GET 请求。但问题是整个页面正在加载到 DIV 中。

【问题讨论】:

    标签: javascript jquery html ajax django


    【解决方案1】:

    让您的视图只返回适合您的 div 的 HTML,而不是完整的页面。

    例如,如果您的http://127.0.0.1:8000/result/ URL 仅用于您的 AJAX 调用,那么让该 URL 的视图只呈现没有 HEAD、BODY 标记等的模板。

    你可能有一个类似这样的模板:

    <ul>
      <li>
        {{ object.value }}
      </li>
    <ul>
    

    请注意,它不是从base.html 或任何其他模板扩展而来,因此在渲染模板时,只会渲染您指定的模板内容。但是,没有什么可以阻止用户点击您的 URL,在这种情况下,返回的结果将不是有效的 HTML,无法在浏览器中显示。

    还有其他选择。您可以在 AJAX 响应中使用 JSON 提供来自服务器的数据,并从 JSON 数据构建 DOM。或者,您可以让整个页面保持原样,并使用 jQuery 将您的 div 的内容替换为仅返回页面的一个子部分,如下所示:

    $('#result-div').load(URL + ' #container-div');
    

    jQuery load() 函数允许您指定加载的 HTML 的片段以插入到您的 div 中。在上面的示例中,提供的 HTML 中 #container-div 元素的内容将插入到 #result-div 中。提供的 HTML 的其余部分将被丢弃。

    【讨论】:

    • @VaIbHaV-JaIn:您的回复并没有给 Austin 带来太多的工作机会。您是否尝试过使用浏览器调试工具来查看 AJAX 是否正常工作?将此处的答案视为提示以使工作正常,而不是完整的解决方案。
    猜你喜欢
    • 2018-05-16
    • 1970-01-01
    • 2023-03-28
    • 2018-04-05
    • 1970-01-01
    • 2018-02-04
    • 2013-08-08
    • 2014-03-04
    相关资源
    最近更新 更多