2016-02-11 3 views
1

Я использую AJAX для обновления некоторой части страницы с помощью AJAX, так что мне не нужно снова перезагружать страницу &.
Но я хочу, чтобы стол был обновляется только при изменении (длинный опрос). Но я не понимаю, как это сделать. Я пробовал использовать для циклов с инструкцией break, но я не получаю правильную логику, я думаю.
файлы являются
getuser.php
Длинный опрос в AJAX с использованием php

<!DOCTYPE html> 
<html> 
<head> 
<style> 
table { 
    width: 100%; 
    border-collapse: collapse; 
} 

table, td, th { 
    border: 1px solid black; 
    padding: 5px; 
} 

th {text-align: left;} 
</style> 
</head> 
<body> 

<?php 
$conn = mysqli_connect('localhost','root','','bondplus'); 
if (!$conn) { 
    die('Could not connect: ' . mysqli_error($con)); 
} 

mysqli_select_db($conn,"bondplus"); 
$sql="SELECT * FROM `user_details`"; 
$result = mysqli_query($conn,$sql); 
echo "<table> 
<tr> 
<th>Firstname</th> 
<th>Mobile</th> 
<th>Email</th> 
<th>Type</th> 
<th>Hometown</th> 
</tr>"; 
while($row = mysqli_fetch_array($result)) { 
    echo "<tr>"; 
    echo "<td>" . $row['u_name'] . "</td>"; 
    echo "<td>" . $row['mob'] . "</td>"; 
    echo "<td>" . $row['email'] . "</td>"; 
    echo "<td>" . $row['type'] . "</td>"; 
    echo "<td>" . $row['address'] . "</td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 
mysqli_close($conn); 
?> 
</body> 
</html> 

trefresh.php

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

<head> 
    <title>AJAX Example</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <script type="text/javascript" src="reloader.js"></script> 
</head> 

<body onload="reloadData()"> 
<p> HELLO There!</p> 
    <div id="currentData" align="center"> 
     <p>Loading Data...</p> 
    </div> 
</body> 

<script> 
var req; 

function reloadData() 
{ 
    var now = new Date(); 
    url = 'getuser.php?' + now.getTime(); 

    try { 
     req = new XMLHttpRequest(); 
    } catch (e) { 
     try { 
     req = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
     try { 
      req = new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch (oc) { 
      alert("No AJAX Support"); 
      return; 
     } 
     } 
    } 

    req.onreadystatechange = processReqChange; 
    req.open("GET", url, true); 
    req.send(null); 
} 

function processReqChange() 
{ 
    // If req shows "complete" 
    if (req.readyState == 4) 
    { 
     dataDiv = document.getElementById('currentData'); 

     // If "OK" 
     if (req.status == 200) 
     { 
     // Set current data text 
     dataDiv.innerHTML = req.responseText; 

     // Start new timer (1 min) 
     timeoutID = setTimeout('reloadData()', 6000); 
     } 
     else 
     { 
     // Flag error 
     dataDiv.innerHTML = '<p>There was a problem retrieving data: ' + req.statusText + '</p>'; 
     } 
    } 
} 
</script> 
</html> 

ответ

0

Проверка на если (req.status == 304) в своем коде, который представляет никаких изменений в ответе. Если не 304, вы можете обновить таблицу.

+0

как вы считаете это ответом? –

+0

как я могу это сделать? я имею в виду, если я проверю его, тогда он не отображает данные. – Irshad

0

Во-первых, я хотел бы дать вам 2 важные советы:

  • Используйте рамки JavaScript для выполнения Ajax операции, как JQuery или AngularJS
  • Всегда разделите слои и никогда не смешивать код, это будет очень загрязнены и не ремонтопригодны
  • Ответ:

    фоновые: Создание EventLayer в проекте

    Он будет получать сигнал от другого объекта, который произошло что-то новое, например: вы можете использовать ActiveMQ ИЛИ он будет посылать запрос каждые N секунд, чтобы внешний объект чтобы проверить, есть ли что-то новое (вы можете хранить флаг в memcache или в синхронном источнике данных, как ANYEM), и после этого смыва данных (создание данных будет, конечно же, созданный бизнес-слой)

    фронт- конец довольно простой, вы займетесь своим собственным Aja x, пример

    function ajaxLongPollingManager() { 
        $.ajax({ 
         url: "yourproject.event.php" 
        }).done(function(response) { 
         // do your job .... 
         // ... 
         // and loop back 
         ajaxLongPollingManager(); 
        }).fail(function(response) { 
         // manage/handle your errors 
         // ... 
         // and loop back 
         ajaxLongPollingManager(); 
        }); 
    } 
    
    Смежные вопросы