2016-06-26 2 views
0

У меня есть проблема с этим кодом:Ajax создать новый DIV вместо обновления

<!DOCTYPE HTML> 
<html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
     <script> 

      (function update() { 
       $.ajax({ 
       type: 'GET', 
       url: "http://192.168.4.2/home/api/stato/ambiente/living", 
       dataType: "json", 
       success: renderList 
       }).then(function() {   
        setTimeout(update, 200); 
       }); 
      })();        

      function renderList(data) { 
       var list = data == null ? [] : (data instanceof Array ? data : [data]); 
       $.each(list, function(index, data) { 
        if (data.stato ==1) { 
         $('#statoList').append('<div>'+ data.ID + " " + data.descrizione + " <img src=img/lamp_on.png " + '</div>'); 
         $('#Switch').append('<button type="button">' + " OFF " + '</button>'); 
        } 
        else { 
         $('#statoList').append('<div>'+ data.ID + " " + data.descrizione + " <img src=img/lamp_off.png " + '</div>'); 
         $('#Switch').append('<button type="button">' + " ON " + '</button>'); 
        } 
       }); 
      } 
     </script> 
    </head> 
    <body> 

     <div id="statoList"></div> 
     <div id="Switch"></div> 

    </body> 

</html> 

Я хочу, чтобы выполнить освежать Див каждые 200 мс, но проблема в том, что каждый раз, когда создается новый DIV ниже предыдущего ,

Как я могу это решить?

спасибо.

ответ

0

Если более чем один из каждого типа empty() контейнеры перед добавлением

$('#statoList').empty(); 
$.each(list, function(index, data) { 
     if (data.stato ==1) {... 
+0

Извините, но я старался, но всегда показывает только последний результат – aarc

+0

OK ... тогда весь вопрос нуждается в уточнении. Использование append будет отображать все результаты из последнего набора данных. Если вам нужны некоторые из существующих, которые необходимо сохранить, то не ясно, как работают ваши данные. – charlietfl

+0

Извините, это ответ GET, если он может помочь: [{«ID»: «S_I_01», «stato»: «1», «ambiente»: «living», «tipo»: «illuminazione», «descrizione»: «Illuminazione Soggiorno 1»}, {«ID»: «S_I_02», «stato»: «1», «ambiente»: «living »,« tipo »:« illuminazione »,« descrizione »:« Illuminazione Soggiorno 2 »}] – aarc

4

функция Append не является правильным один за то, что вы ожидаете, я предлагаю вам использовать .html(), поэтому он будет переводить весь код (новый Div) в HTML-код

function renderList(data) { 
       var list = data == null ? [] : (data instanceof Array ? data : [data]); 
       $.each(list, function(index, data) { 
        if (data.stato ==1) { 
         $('#statoList').html('<div>'+ data.ID + " " + data.descrizione + " <img src=img/lamp_on.png " + '</div>'); 
         $('#Switch').html('<button type="button">' + " OFF " + '</button>'); 
        } 
        else { 
         $('#statoList').html('<div>'+ data.ID + " " + data.descrizione + " <img src=img/lamp_off.png " + '</div>'); 
         $('#Switch').html('<button type="button">' + " ON " + '</button>'); 
        } 
       }); 
      } 
+0

будет отображаться только последний элемент каждого типа, если массив имеет более чем один из каждого – charlietfl

+0

Ой спасибо! Я понял! Однако, как упоминалось charlietfl, он показывает только последний результат. – aarc