比较ajax的响应 - jQuery

时间:2015-08-12 13:03:57

标签: javascript jquery ajax

我试图将ajax的回复与我在响应ajax中添加的div内容进行比较。

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); 
      }
}

我的ajax成功数据在将其转换为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 个答案:

答案 0 :(得分: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); 

      }

}