我有一個儀表板頁面,用於檢查顯示在頁面上的更新的json響應。網頁和網站的其他部分與顯示它的瀏覽器位於同一臺機器上。它打算留在,並在該頁上不斷。它由兩部分組成:一個javascript/jquery fetcher,它調用一個讀取數據庫的PHP頁面,如果內容已更改,則返回「有效內容」值;如果不是,則僅檢查最後一次檢查的時間戳。它的工作原理目前拉動的音符,因爲他們改變,但它有問題Ajax請求在儀表板頁面上崩潰瀏覽器
確定的問題:
1:在鍍鉻控制檯收到此消息每次頁面加載:
同步的XMLHttpRequest的主線程由於對最終用戶的體驗有不利影響而不推薦使用。如需更多幫助,請查詢http://xhr.spec.whatwg.org/。
2:我已經注意到,在將此頁面添加到瀏覽器之後,瀏覽器所使用的RAM數量大量增加。大約4小時後,瀏覽器崩潰。
JS代碼:
var lastcheck;
var content_main = $('#notes');
$(document).ready(function() {
$.ajaxSetup({ cache: false });
setInterval(function() {
updateJson();
}, 5000);
});
function updateJson() {
var request = '/sections/noteboard/notes.php?new=1×tamp='+ (lastcheck ? lastcheck : 0);
$.ajax({
url: request,
dataType: 'json',
async: false,
cache: false,
success: function(result) {
if (result.payload) { // new data
lastcheck = result.time; // update stored timestamp
content_main.html(result.payload); // update html element
} else { // no new data, update only timestamp
lastcheck = result.time;
}
}
});
}
的PHP代碼:
$timestamp = 0;
$where = '';
if (isset($_GET['timestamp'])) {
$timestamp = $_GET['timestamp'];
}
if ($timestamp) {
$where = ' WHERE timing >= '.$timestamp;
}
$result = $mysqli->query("SELECT * FROM `mirror_notes` ". $where ." ORDER BY `id` DESC LIMIT 0,1");
$row_cnt = $result->num_rows;
$output = array();
$myrow = $result->fetch_array(MYSQLI_ASSOC);
if ($row_cnt=='1' && $myrow['message'] !== '') { // do we have any script output ?
$output['payload'] = stripslashes($myrow['message']); // your current script output would go in this variable
}
$output['time'] = time(); // so we know when did we last check for payload update
$json = json_encode($output, ((int)JSON_NUMERIC_CHECK)); // jsonify the array
echo $json; // send it to the client
$result->close();
$mysqli->close();
exit();
任何幫助是極大的讚賞,因爲我與jQuery的初學者,也只有謙虛地用PHP更好。 謝謝
我強烈建議爲您的查詢使用準備好的語句。始終是一個可怕的想法將瀏覽器輸入連接到查詢中,而不進行清理。搜索「sql注入」。 –
確實,如果此頁面在我們的本地網絡之外可用,我會更關注SQL注入。它是一個儀表板頁面,託管在爲其運行瀏覽器的同一臺計算機上。 –