【问题标题】:best way to put ajax data into html and display on page将ajax数据放入html并显示在页面上的最佳方法
【发布时间】:2012-05-16 14:35:01
【问题描述】:

我正在通过 jquery/ajax/php 获取相当多的 json 数据。当我获得数据时,我会在弹出的模式上的一些表格中显示它。我就是这样做的。

str1  = "<table class='line_item_order_info_table'>";
str1 += "<tr><td class='line_item_label' >";
str1 += "Order no.";
str1 += "</td></tr>";
str1 += "<tr><td class='line_item_data' id='order_number_td'>";
str1 += data.order_number;
str1 += "</td></tr>";
str1 += "</table>";

str1 += "</td>";
str1 += "<td>";

str1 += "<table class='line_item_order_info_table'>";
str1 += "<tr><td class='line_item_label'>";
str1 += "Order date";
str1 += "</td></tr>";
str1 += "<tr><td class='line_item_data'>";
str1 += data.order_date;
str1 += "</td></tr>";
str1 += "</table>";

//many, many more lines that look like this

$('#modal-div').html(str1);

这是通过 javascript 将此数据放入 html 的最佳方式吗?像这样跟踪有点困难。这么多的 html,在任何地方都没有任何缩进以使其更易于阅读,看起来或试图在其中找到一些东西有点痛苦。

如果您能指出更好的策略方向,不胜感激!谢谢!

【问题讨论】:

  • 您考虑过使用模板吗? (这个问题有几个模板引擎的例子stackoverflow.com/questions/4286181/…)
  • 这听起来像是一个糟糕的实现设计。您应该使用 @MilkyWayJoe 建议的模板。
  • 谢谢。你能给我一些关于模板的背景知识吗?一个快速的谷歌搜索给了我很多,但没有很多介绍他们做什么,或者为什么他们对我正在做的事情更好或更实用。也许你知道一些网站..

标签: javascript jquery json


【解决方案1】:

如果您绝对必须按照您的描述写出您的 HTML,您可以在每行之后在您的标记中添加换行符。

var myHTML = '<div class="bleh"> \
     <ul class="bleh2"> \
         <li>'+ data.order_number +'</li> \
         <li>'+ data.order_date +'</li> \
     </ul> \
  </div>';

【讨论】:

  • 谢谢!但我绝对不必那样写html。有什么更好的方法?我很感兴趣!
  • 我同意 Rob Angelier 和 MilkyWayJoe 的观点,即我的解决方案不是一个出色的设计(我现在正在尝试使用模板),但这是一种非常酷的方法,可以让我当前的系统更具可读性.谢谢!!
【解决方案2】:

如果您从服务器代码(而不是 HTML 字符串)传递对象数组,则可以使用 JavaScript 循环遍历数组,获取数组中对象的每个属性。

在每次迭代 $.append 时,将 html 转换为您的 #modal-div。

类似这样的东西:

for (int i = 0: i<msg.d.length; i++) {

    var order_number = msg.d[i].order_number;
    ...

    $('#modal-div').append('<li>'+order_number +'</li>');
}

【讨论】:

    【解决方案3】:

    您可以在 HTML 中将 #modal-div 标记为具有特定 id 的模板,并在显示模态窗口之前替换为实际数据。

    example

    <div id="modal-div">
    <table class='line_item_order_info_table'>
      <tr>
        <td class='line_item_label' >Order Number</td>
        <td id="order_num">order_num</td>
      </tr>
      <tr>
        <td class='line_item_label'>Order date</td>
        <td id="order_date">order_date</td>
      </tr>
    </table>
    </div>
    
    $(document).ready(function(){
      var data ={"ordernumber":"123", "orderdate":"12/01/1999"};
      $('#modal-div').hide();
      $('#submit').click(function(){
        $('#order_num').html(data.ordernumber);
        $('#order_date').html(data.orderdate);
        $('#modal-div').show();
      });
    });
    

    【讨论】:

    • 我读到我应该尽可能少地进行 dom 操作。即,如果可能,只更新一次。我认为当我做了几百次时,这将是一个相当繁重的过程。但也许可以忽略不计?
    猜你喜欢
    • 2014-11-06
    • 1970-01-01
    • 2018-10-05
    • 2019-12-12
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多