AJAX 没有拉动 bluehost

AJAX not pulling on bluehost

我有两个简单的页面。

test.php:

<div id="demo"></div>


<script>
function loadDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML =  this.responseText;
    }
  };
  xhttp.open("GET", "sse.php", true);
  xhttp.send();
}

var myVar = setInterval("loadDoc()", 2000);
</script>

sse.php

<?php
echo time();
?>

问题是 - 在我的私人 PC 上 - 它运行完美。 每 2 秒,sse.php 正在拉动,并且 demo-div 相应变化。

但是,在我的 Bluehost 网站上,相同的脚本不起作用。 它拉了一次(两秒后),仅此而已。

有趣的是,如果我手动刷新 sse.php(在另一个选项卡中) 演示 div 内容确实发生了变化! 我试图找出问题所在,但我没有想法。

有什么想法吗?

谢谢。

我在这里描述了一个类似的问题:

去获取我编写的代码并检查是否适合你。

编辑:

呼叫将是:

ajaxGetData('http://whateverurl.com', 'containerObjectId');

以及支持的功能:

function ajaxGetData(url, objId)
{
var request;
if (window.XMLHttpRequest) 
{ 
    request = new XMLHttpRequest();
} 
else if (window.ActiveXObject) 
{ 
    try 
    {
        request = new ActiveXObject('Msxml2.XMLHTTP');
    } 
    catch (e) 
    {
    try {
        request = new ActiveXObject('Microsoft.XMLHTTP');
    } 
    catch (e) {}
    }
}

if (!document.getElementById(objId))
{
    return false;
}
var obj = document.getElementById(objId); /* <= fix: added var */
ajaxLoadingIndicator(obj);

/* YOU MAY NOT NEED TO ADD/USE EVENT HANDLERS */
request.addEventListener("progress", function(event){ajaxCallBack(event, obj)}, false);
request.addEventListener("load", function(event){ajaxCallBack(event, obj)}, false);
request.addEventListener("error", function(event){ajaxCallBack(event, obj)}, false);
request.addEventListener("abort", function(event){ajaxCallBack(event, obj)}, false);

request.onreadystatechange = function() 
{
    if(request.readyState === 4) 
    { 
        if(request.status === 200) 
        { 
            obj.innerHTML  = request.responseText;
        }
        else
        {
            obj.innerHTML = '<div id="'+id+'">Error loading data.</div>';
        }
    }
};
/* in my case i'm using asynch AJAX request (true) */
request.open('GET', url, true);
request.send(null);
}
/* YOU CAN GO AND SHOW FANCY LOADERS HERE */
function ajaxLoadingIndicator(obj)
{
idBase = obj.id.split("_");
id = idBase[0]+"_ajax_loading";
obj.innerHTML = '<div id="'+id+'">Loading</div>';
}

/* IF YOU DONT WANT EVENT HANDLERS, YOU DON'T NEED THE FOLLOWING FUNC */
function ajaxCallBack(e) 
{
// Handle each event
switch(e.type)
{
    case 'error':
    {
        idBase = obj.id.split("_");
        id = idBase[0]+"_ajax_error";
        obj.innerHTML = '<div id="'+id+'">Server unavailable. Error loading data.</div>';
    } break;
}
}

经过进一步研究 - 在我的 sse.php 文件顶部添加这些行并刷新此页面,解决了我的问题。谢谢

<?php
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

echo time();
?>