Javascript ajax返回值无效
我试图在用户到达页面底部并添加新内容时更新提要。出于某种原因,它根本不返回内容。 这是我的jquery/javascriptJavascript ajax返回值无效,javascript,jquery,ajax,Javascript,Jquery,Ajax,我试图在用户到达页面底部并添加新内容时更新提要。出于某种原因,它根本不返回内容。 这是我的jquery/javascript $(window).scroll(function(){ if($(window).scrollTop() + $(window).height() > $(document).height() - 650){ var xmlhttp = new XMLHttpRequest(); xmlhttp.on
$(window).scroll(function(){
if($(window).scrollTop() + $(window).height() > $(document).height() - 650){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("thumbs").innerHTML = xmlhttp.responseText;
}
else {
document.getElementById("thumbs").innerHTML = "Error Occurred.";
}
}
xmlhttp.open("GET", "include/update-gamer-feed-curl.php", true);
xmlhttp.send();
}
});
php文件已经可以工作了,因为它已经获得了前十个项目,我只是再次调用它来获取要重新加载到屏幕中的数据,以便在获得更多元素后准备追加所需的内容
它告诉我xmlhttp被贬值了。我也尝试过使用
$.ajax({url: "include/update-gamer-feed-curl.php", success: function(result)
{
$("#thumbs").append(result);
}
但这也不起作用。我知道是这样的,因为如果我把字符串测试放在append元素中result所在的位置,它会附加测试字符串
clearTimeout($.data(this, 'scrollTimer'));
$.data(this, 'scrollTimer', setTimeout(function() {
if($(window).scrollTop() + $(window).height() > $(document).height() - 650){
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "/echo/json/", true);
xmlhttp.send();
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4){
if (xmlhttp.status == 200) {
document.getElementById("thumbs").innerHTML = xmlhttp.responseText;
}
else{
console.log("Error: rState=" + xmlhttp.readyState + ", status=" + xmlhttp.status);
}
}
}
}
}, 250));
看来这个要求重复得太多了。250毫秒的计时器帮助了一些人,但innerHTML被覆盖的速度太快了。所以我也改变了,如果成功,innerHTML将被写入,但控制台会收到错误。readyState 1,2,3在滚动时重复多次,并导致许多错误。通过先检查readtState==4来避免
以下是readystates的描述
- 0=当前对象未初始化(未初始化open方法 (还没有打电话)
- 1=请求已打开,但尚未调用send方法
- 2=请求已发送,但尚未收到任何数据
- 3=部分数据已收到,但尚未可用
- 4=所有数据都可用
,它首先确保readyState==4,然后检查状态。通过在ReadyStateChange上打开并发送,您可以避免readystate错误0和1。“这是在告诉我xmlhttp已贬值”-不,这是在说同步请求已被弃用。删除要打开的第三个参数。发出异步请求。XMLHttpRequest未被弃用。不推荐使用同步AJAX,因此如果使用
false
作为xmlhttp.open()的第三个参数,则会收到该警告
。检查Javascript控制台的“网络”选项卡以查看服务器返回的内容。我删除了第三个参数错误消失了,但它仍然没有返回元素。什么是xmlhttp.status
?是不是不是不是200?什么是statusText。这确实像需要的那样拉入页面,但当我们现在调用它时,它说错误是rstate=1 status=0,rstate=2 status=200。我更新了我的答案,看起来你必须先检查readystate==4,然后检查状态。如果你觉得我解决了你原来的问题,请记住在你能回答的时候尽快标记答案。:)谢谢,我想我们很接近了,我觉得你给了我正确的答案,我想现在的问题在我打电话的文件中。我将不得不查看该文件中的api和其他调用,以了解它为什么不希望加载数据。谢谢你的时间和回答。