Javascript 计时器中的Ajax正在影响我的服务器
我使用ajax,以便从服务器读取文件内容。我在计时器中调用ajax所在的函数。这会影响我的服务器。它会崩溃。如果这是正确的方法,会有什么问题? 请给我一些建议,因为我不知道它有什么问题 我首先调用函数:“函数(ctrl)” 这里是read-text.php文件:Javascript 计时器中的Ajax正在影响我的服务器,javascript,php,ajax,Javascript,Php,Ajax,我使用ajax,以便从服务器读取文件内容。我在计时器中调用ajax所在的函数。这会影响我的服务器。它会崩溃。如果这是正确的方法,会有什么问题? 请给我一些建议,因为我不知道它有什么问题 我首先调用函数:“函数(ctrl)” 这里是read-text.php文件: 代码的问题在于,您没有等待响应结束。因此,随着时间的推移,您正在发送一个又一个请求。这将在适当的时候耗尽所有内存。因此,在发送下一个请求之前,首先等待响应 这个怎么样 function loadXMLDoc(ctrl) { va
代码的问题在于,您没有等待响应结束。因此,随着时间的推移,您正在发送一个又一个请求。这将在适当的时候耗尽所有内存。因此,在发送下一个请求之前,首先等待响应 这个怎么样
function loadXMLDoc(ctrl) {
var content=ctrl.id;
var xmlhttp = new XMLHttpRequest();
var url = "../user/test/read-text.php?user="+content;
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == XMLHttpRequest.DONE) {
if (xmlhttp.status == 200) {
document.getElementById("area").value=xmlhttp.responseText;
setTimeout(loadXMLDoc(), 1200); //call the function again
} else if (xmlhttp.status == 400) {
console.log('There was an error 400');
} else {
console.log('something else other than 200 was returned');
}
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
};
loadXMLDoc(ctrl);
为什么不使用jquery或一些已经内置在Js框架中的ajax呢?:在阅读您的帖子时,我观察到了一些东西,但我不明白。内容是什么?您写了这样的内容:“setTimeout(content(),1200);//再次调用函数”。这是一个函数?。还有一件事。因为您删除了函数get(ctrl),我必须调用loadXMLDoc函数吗?对不起,这是一个输入错误。它不是
内容
,而是加载xmldoc
。是,现在应该使用函数loadXMLDoc
,而不是get(ctrl)
。但是,您可以根据命名约定重命名该函数。谢谢您的帮助!!
<?php
$rec_user=$_GET['user'];
echo($rec_user);
$chat = fopen($rec_user.".txt", "r") or die("Unable to open file!");
echo fread($chat,filesize($rec_user.".txt"));
fclose($chat);
?>
function loadXMLDoc(ctrl) {
var content=ctrl.id;
var xmlhttp = new XMLHttpRequest();
var url = "../user/test/read-text.php?user="+content;
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == XMLHttpRequest.DONE) {
if (xmlhttp.status == 200) {
document.getElementById("area").value=xmlhttp.responseText;
setTimeout(loadXMLDoc(), 1200); //call the function again
} else if (xmlhttp.status == 400) {
console.log('There was an error 400');
} else {
console.log('something else other than 200 was returned');
}
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
};
loadXMLDoc(ctrl);