Javascript Ajax请求使仪表板页面上的浏览器崩溃
我有一个仪表板页面,用于检查页面上显示的更新json响应。页面和站点的其余部分与显示页面的浏览器位于同一台计算机上。这是打算留在,并在该页上不断。它由两部分组成,一个javascript/jquery抓取程序调用一个PHP页面,该页面读取返回“有效负载”值(如果内容已更改)的数据库,或者如果内容未更改,则仅返回检查的最后一个时间戳。当音符改变时,它目前可以拉音符,但是它有问题 好的,问题是: 1:在chrome控制台中,每次加载页面时都会收到此消息: 主线程上的同步XMLHttpRequest不推荐使用,因为它会对最终用户的体验产生有害影响。如需更多帮助,请查看 2:我注意到,在将这个添加到页面后,浏览器使用的内存量大幅增加。大约4小时后,浏览器崩溃 JS代码:Javascript Ajax请求使仪表板页面上的浏览器崩溃,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个仪表板页面,用于检查页面上显示的更新json响应。页面和站点的其余部分与显示页面的浏览器位于同一台计算机上。这是打算留在,并在该页上不断。它由两部分组成,一个javascript/jquery抓取程序调用一个PHP页面,该页面读取返回“有效负载”值(如果内容已更改)的数据库,或者如果内容未更改,则仅返回检查的最后一个时间戳。当音符改变时,它目前可以拉音符,但是它有问题 好的,问题是: 1:在chrome控制台中,每次加载页面时都会收到此消息: 主线程上的同步XMLHttpRequest不
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也只是稍微好一点。
谢谢我想没有人会让浏览器打开这么久而崩溃
一个简单的解决方案是使用套接字。用php打开套接字并启动与浏览器的通信并不难。你应该调查一下。我认为没有人会让浏览器打开这么久而崩溃
一个简单的解决方案是使用套接字。用php打开套接字并启动与浏览器的通信并不难。你应该仔细研究一下。这个页面是一个仪表板,所以它最终是要保持打开状态的。如果你这么认为,那么你肯定应该仔细研究一下套接字。我不明白,对于浏览器页面的客户端更新,套接字怎么会比ajax更好…?你可以让它看起来像有更新时,客户端会收到通知一样,不需要加载这么多请求。这就是重点。这个页面是一个仪表板,所以它最终是要保持打开状态的。如果你这么认为,那么你一定要研究一下套接字。我不明白,对于浏览器页面的客户端更新,套接字怎么会比ajax更好…?你可以让它看起来像是当有更新时,客户端会收到通知,不需要加载这么多请求。这就是问题所在。我强烈建议您在查询时使用事先准备好的语句。将浏览器输入连接到查询中而不进行清理,这始终是一个糟糕的想法。搜索“sql注入”。没错,如果这个页面在本地网络之外可用,我会更关心sql注入。它是一个仪表板页面,托管在为其运行浏览器的同一台计算机上。我强烈建议您在查询时使用准备好的语句。将浏览器输入连接到查询中而不进行清理,这始终是一个糟糕的想法。搜索“sql注入”。没错,如果这个页面在本地网络之外可用,我会更关心sql注入。它是一个仪表板页面,位于为其运行浏览器的同一台计算机上。