2015-08-12 3 views
1

Я пытаюсь сравнить ответ ajax с некоторым содержимым div, которое я добавляю из ответа ajax.Сравнение ответа ajax - jQuery

function triggerLoc() 
{ 
    var htmlCont = $('#Pre_Div').text(); 
    $.ajax({ 
     type : "POST", 
     url : "url",     
     success : function(data){ 
      var txt = $(data).text(); 
      if(htmlCont != txt) 
      { 
       $('#Pre_Div').prepend(data); 
      } 
      else 
      { 
       alert('Content is same'); 
      } 
      setTimeout(triggerLoc, 2000); 
     } 
} 

Мои данные Аякса успех выглядит точно так же, как это после преобразования его в text()

     Name - B7 
         Location - cant-1 
         [12-08-2015 17:45:35 (27 minutes ago) ] 





         Name - A1 
         Location - pro-1 
         [12-08-2015 17:43:50 (29 minutes ago) ] 






         Name - B7 
         Location - cant-2 
         [12-08-2015 17:46:42 (26 minutes ago) ] 





         Name - A1 
         Location - pro-2 
         [12-08-2015 17:44:35 (28 minutes ago) ] 

который включает в себя пробелы, разрывы строк. Таким образом, установка каждые 2 секунды, элементы управления идут внутри if(htmlCont != txt) каждый раз, даже если текст такой же. Мое предупреждение не будет выполнено. как сравнить ответ ajax с моим добавленным содержимым html?

+1

использование облицовки(), например, $ (данные) .text(). Дифферент() –

+0

это работает в первый раз .. не при вызове на SetTimeout. – user3721305

+0

переменная данных json Я думаю? – ebilgin

ответ

2

Предполагаю, что переменная данных JSON. Я высоко не рекомендую сделать сравнение с JSON и DOM способом.

Вы можете сравнить с переменными JavaScript. Создайте пустую переменную, затем назначьте значение при первом вызове функции ajax. Вы можете сравнить этот путь.

var appliedData; 

function triggerLoc() { 

    $.ajax({ 
     type : "POST", 
     url : "url",     
     success : function(data) { 

      // Check applied data on DOM with new data is same 

      if (appliedData != data) { 

       appliedData = data; 
       // Assign new value to global variable. 

       $('#Pre_Div').prepend(data); 
       // I recommend change this line. Parse json to html and append it 

      } else { 

       alert('Content is same'); 

      } 

      setTimeout(triggerLoc, 2000); 

     } 

} 
+0

Спасибо, он отлично работал. Но я удалил свою временную метку, когда мои данные были обработаны 'applyData'. потому что каждый раз «время» меняется. И это сработало. – user3721305

Смежные вопросы