2015-05-27 37 views
0

我有从xml中提取数据的页面。所有工作正常,但我不能在HTML中指定回复。在HTML中分配XML-AJAX响应

XML:

<XML> 
<script id="tinyhippos-injected"/> 
<sales> 
<sales_list> 
<id>123</id> 
<outlet_name>vividham</outlet_name> 
<sales_date>2015-05-22</sales_date> 
<sales_time>20:45:00</sales_time> 
</sales_list> 
</sales> 
</XML> 

以下是我的js。 -

var sales_date = $('#sales_date').val(); 

$.ajax({ 
      type: "GET", 
      url:'http://www.xyz.co/AppData/sales_list.php', 
      cache: false, 
      dataType: "xml", 
      success: function(xml) { 

       var items = $(xml).find('sales_list').filter(function(){ 
         return $('sales_date', this).text() == sales_date; 
        }); 

       items.each(function(index, sales_list){ 
        var id = $(this).find('id').text(); 
        var outlet_name = $(this).find('outlet_name').text(); 
        var sales_time = $(this).find('sales_time').text(); 

        // I am not able to assign data to html from here.        

       }); 
      } 


    }); 

HTML: -

<div class="list-block" id="sales_content"> 
    <ul> 
     <li class="item-content" id="sales_list"> 
      <div class="item-media">here I need time</div> 
       <div class="item-inner"> 
        <div class="item-title">Here I need outlet_name</div> 
      </div> 
     </li>       
    </ul> 
</div> 

div与sales_content将刷新按钮点击刷新内部<ul>内容。我怎样才能做到这一点?

+0

你能不能给我们你想排序的XML的例子,你想如何分类?也许一个简单的[jsfiddle](http:// jsfiddle)没有ajax的东西? – FrankerZ

+0

我已经添加了XML内容 –

+0

您要排序的xml属性? – ozil

回答

1

在这种情况下,你需要创建动态html。取出内ulli,让他们动态像下面

HTML

<div class="list-block" id="sales_content"></div> 

JS

var sales_date = $('#sales_date').val(); 
$.ajax({ 
    type: "GET", 
    url: 'http://www.xyz.co/AppData/sales_list.php', 
    cache: false, 
    dataType: "xml", 
    success: function (xml) { 

     var items = $(xml).find('sales_list').filter(function() { 
      return $('sales_date', this).text() == sales_date; 
     }); 

     var html = ''; 
     items.each(function (index, sales_list) { 
      var id = $(this).find('id').text(); 
      var outlet_name = $(this).find('outlet_name').text(); 
      var sales_time = $(this).find('sales_time').text(); 

      html += '<ul><li class="item-content" id="sales_list"><div class="item-media">' + sales_time + '</div><div class="item-inner"><div class="item-title">' + outlet_name + '</div></div></li></ul>'; 
     }); 

     $('#sales_content').append(html); 
    } 
}); 
+0

附加html正在复制数据。我怎样才能防止这一点? –

+0

@Nehil Mistry你可以使用'.remove()'在追加'$('#sales_content'')之前删除现有的'ul' find('ul')。remove();' – ozil

+0

谢谢。但是我用'$('#sales_content')。html(html);'替换了HTML –

0

尝试排序数组在此之前就可以了foreach循环:

items.sort(function(a, b) { 
    var aTime = $(a).find('sales_time').text(); 
    var bTime = $(b).find('sales_time').text(); 
    return (aTime == bTime) ? 0 : (aTime > bTime) ? 1 : -1; 
}).each(function(index, sales_list){ 
    //Now that it's sorted, do stuff here: 
    var id = $(this).find('id').text(); 
    var outlet_name = $(this).find('outlet_name').text(); 
    var sales_time = $(this).find('sales_time').text(); 
});