Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax请求使仪表板页面上的浏览器崩溃_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript Ajax请求使仪表板页面上的浏览器崩溃

Javascript Ajax请求使仪表板页面上的浏览器崩溃,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个仪表板页面,用于检查页面上显示的更新json响应。页面和站点的其余部分与显示页面的浏览器位于同一台计算机上。这是打算留在,并在该页上不断。它由两部分组成,一个javascript/jquery抓取程序调用一个PHP页面,该页面读取返回“有效负载”值(如果内容已更改)的数据库,或者如果内容未更改,则仅返回检查的最后一个时间戳。当音符改变时,它目前可以拉音符,但是它有问题 好的,问题是: 1:在chrome控制台中,每次加载页面时都会收到此消息: 主线程上的同步XMLHttpRequest不

我有一个仪表板页面,用于检查页面上显示的更新json响应。页面和站点的其余部分与显示页面的浏览器位于同一台计算机上。这是打算留在,并在该页上不断。它由两部分组成,一个javascript/jquery抓取程序调用一个PHP页面,该页面读取返回“有效负载”值(如果内容已更改)的数据库,或者如果内容未更改,则仅返回检查的最后一个时间戳。当音符改变时,它目前可以拉音符,但是它有问题

好的,问题是:

1:在chrome控制台中,每次加载页面时都会收到此消息:

主线程上的同步XMLHttpRequest不推荐使用,因为它会对最终用户的体验产生有害影响。如需更多帮助,请查看

2:我注意到,在将这个添加到页面后,浏览器使用的内存量大幅增加。大约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&timestamp='+ (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注入。它是一个仪表板页面,位于为其运行浏览器的同一台计算机上。