2016-06-29 12 views
1

Ich habe ajax Seite, die viele Antwort-Box drucken.change constant von array abrufen

Alle paar Sekunden bekomme ich für ein anderes Ajax-Array mit Antwort-ID und "letzte Antwort Datum". Ich möchte Schleife auf diesem Array ausgeführt werden soll („res“), die die ganze Spannweite mit Klasse „lastReplyDate“ finden und ersetzen Sie die Konstante mit der Daten-I aus dem Array erhalten

Antwort:

while($mainIndex = mysql_fetch_array($mainQuery)) 
    $chatTopics[] = array('id' => $mainIndex['id'], 'statusID' => $mainIndex['statusID'], 'createDate' => $mainIndex['lastReplyDate']); 

echo json_encode($chatTopics); 

JS

function refreshStatuses() 
{ 
    var lastRefreshReplies = $('#lastRefreshReplies').val(); 
    var data = 'lastRefreshReplies=' + lastRefreshReplies; 
    var data = data + "&act=refreshStatuses";  

    $.ajax({ 
     type: "POST", 
     url: "ajax/chatsAjax.php", 
     data: data, 
     cache: false, 
     dataType: 'json', 
     success: function(res){ 

      console.log(res); 

      var elems = $('#chatLists li.replyBox'); 
      for (var i=0; i<res.length; i++) { 
       $("#chatLists li.replyBox id" data-ref = res[i]['id']).find("span.replyStatus").toggleClass('chatStatusColor_noAssign chatStatusColor_hd');; 
      }    

      $("#lastRefreshReplies").val(getTimestamp());     

     } 
    }); 
    setTimeout('refreshStatuses()', 10000); //10 seconds 
} 

HTML Beispiel:

<li class="replyBox"> 
    <div class="left"> 
     <img src='images/avatars/17.jpg' alt='' style='width: 60px; height: 60px;' /> <br /> 
    </div> 
    <div class="left" style="margin-left: 15px;"> 
     <h2><a href="#" data-ref="24" class="chatTitle">test C2</a></h2> 
     Esth (Flying) <br /> 
     <span class="lastReplyDate">2016-06-29 17:34:10</span> 
     <span class="replyStatus chatStatusColor_noAssign">Not assign</span> 
    </div> 

    <br class="clear" /> 
</li> 

<li class="replyBox"> 
    <div class="left"> 
     <img src='images/avatars/17.jpg' alt='' style='width: 60px; height: 60px;' /> <br /> 
    </div> 
    <div class="left" style="margin-left: 15px;"> 
     <h2><a href="#" data-ref="23" class="chatTitle">test c1</a></h2> 
     Roi (Pele) <br /> 
     <span class="lastReplyDate">2016-06-29 18:19:31</span> 
     <span class="replyStatus chatStatusColor_noAssign">Not assign</span> 
    </div> 

    <br class="clear" /> 
</li> 

Antwort

0

das ist falsch setTimeout ('ref reshStatus() ', 10000); setzen Sie settimeout außerhalb Ihrer Funktion

function refreshStatuses() 
{ 
    var lastRefreshReplies = $('#lastRefreshReplies').val(); 
    var data = 'lastRefreshReplies=' + lastRefreshReplies; 
    var data = data + "&act=refreshStatuses";  

    $.ajax({ 
     type: "POST", 
     url: "ajax/chatsAjax.php", 
     data: data, 
     cache: false, 
     dataType: 'json', 
     success: function(res){ 

      console.log(res); 

      var elems = $('#chatLists li.replyBox'); 
      for (var i=0; i<res.length; i++) { 
       $("#chatLists li.replyBox id" data-ref = res[i]['id']).find("span.replyStatus").toggleClass('chatStatusColor_noAssign chatStatusColor_hd');; 
      }    

      $("#lastRefreshReplies").val(getTimestamp());     

     } 
    }); 

} 

setTimeout(refreshStatuses(), 10000); //10 seconds