Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.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_Jquery_Ajax - Fatal编程技术网

Javascript ajax返回值无效

Javascript 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

我试图在用户到达页面底部并添加新内容时更新提要。出于某种原因,它根本不返回内容。 这是我的jquery/javascript

$(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和其他调用,以了解它为什么不希望加载数据。谢谢你的时间和回答。