从javascript读取实时日志文件
我使用以下代码从不断增长的文本日志文件中读取数据从javascript读取实时日志文件,javascript,jquery,ajax,Javascript,Jquery,Ajax,我使用以下代码从不断增长的文本日志文件中读取数据 setInterval(call, 1000); function call() { $.ajax({ type: "GET", url: "GenNumber.txt", dataType: "text", success: function(data) { readdata(data); }, }); } 我的问题是,ajax是在每次调用中读取完整的文件还是在上次调用中(新)添加
setInterval(call, 1000);
function call() {
$.ajax({
type: "GET",
url: "GenNumber.txt",
dataType: "text",
success: function(data) {
readdata(data);
},
});
}
我的问题是,ajax是在每次调用中读取完整的文件还是在上次调用中(新)添加的行。如果它在每次调用中读取整个文件,当文件大小越来越大时,它可能会崩溃。有没有办法只从上次调用中读取新行,并在文件停止增长时停止程序
谢谢您可以使用()函数的
设置
参数的标题
参数来设置范围
HTTP标题以限制您接收的数据
一些例子:
bytes=9500-
将在偏移量9500处开始发送数据
bytes=-500
将发送最后500个字节。
这要求HTTP服务器支持范围(大多数都支持)
范围标头记录在中
以您的代码为例:
$.ajax({
type: "GET",
url: "GenNumber.txt",
dataType: "text",
success: function (data) { readdata(data); },
headers: {
"Range" : "bytes=-500"
}
});
您可以使用()函数的
设置
参数的标题
参数来设置范围
HTTP标题,以限制您接收的数据
一些例子:
bytes=9500-
将在偏移量9500处开始发送数据
bytes=-500
将发送最后500个字节。
这要求HTTP服务器支持范围(大多数都支持)
范围标头记录在中
以您的代码为例:
$.ajax({
type: "GET",
url: "GenNumber.txt",
dataType: "text",
success: function (data) { readdata(data); },
headers: {
"Range" : "bytes=-500"
}
});
作为neuhaus答案的补充,使用
范围
标题,您可以从客户端存储已读取的总字节数。因此,在每个请求中,您将只接收自上次调用以来追加的数据
var byteRead=0;
setInterval(function(){
$.ajax({
type: "GET",
url: "GenNumber.txt",
dataType: "text",
success: function (data) {
byteRead+= data.length;
readdata(data);
},
headers: {
"Range" : "bytes="+byteRead+"-"
}
});
},1000);
作为neuhaus答案的补充,使用
范围
标题,您可以从客户端存储已读取的总字节数。因此,在每个请求中,您将只接收自上次调用以来追加的数据
var byteRead=0;
setInterval(function(){
$.ajax({
type: "GET",
url: "GenNumber.txt",
dataType: "text",
success: function (data) {
byteRead+= data.length;
readdata(data);
},
headers: {
"Range" : "bytes="+byteRead+"-"
}
});
},1000);
代码=>setInterval(调用,1000);函数调用(){$.ajax({type:“GET”,url:“GenNumber.txt”,dataType:“text”,success:function(data){readdata(data);},},});}请不要使用注释提供附加信息。代码=>setInterval(调用,1000);函数调用()。但我在控制台中看到的唯一问题是,当文件停止增长时会出现一些错误消息。有没有更好的方法来处理这个问题。获取304(未修改)k.cors.a.crossDomain.send@jquery.min.js:4 n.extend.ajax@jquery.min.js:4(匿名函数)@just.html:36是否有错误?如果文件没有被修改,那么您就没有数据可以读取。在
url:“GenNumber.txt”
中,只要用文件的正确url替换GenNumber.txt
,在将cache:false添加到ajax后,错误304就消失了,但现在当文件停止增长时,我收到错误“416(请求的范围不可满足)”。看起来浏览器要求一些范围,但没有得到它。@没关系,只要抓住错误,一秒钟后再试一次,这对我来说绝对有效。但我在控制台中看到的唯一问题是,当文件停止增长时会出现一些错误消息。有没有更好的方法来处理这个问题。获取304(未修改)k.cors.a.crossDomain.send@jquery.min.js:4 n.extend.ajax@jquery.min.js:4(匿名函数)@just.html:36是否有错误?如果文件没有被修改,那么您就没有数据可以读取。在url:“GenNumber.txt”
中,只要用文件的正确url替换GenNumber.txt
,在将cache:false添加到ajax后,错误304就消失了,但现在当文件停止增长时,我收到错误“416(请求的范围不可满足)”。浏览器似乎在请求某个范围,但没有得到该范围。@没关系,只需捕获错误并在一秒钟后重试即可