2017-01-24 5 views
1

Ich habe zwei einfache Seiten.AJAX zieht nicht auf 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(); 
?> 

Problem ist - in meinem privaten PC - es funktioniert perfekt. alle 2 Sekunden, sse.php zieht, und Demo-Div ändert sich entsprechend.

ABER, in meiner Bluehost-Website, das gleiche Skript - funktioniert nicht. es zieht einmal (nach zwei Sekunden) und das ist es - nicht mehr.

Lustig ist, wenn ich die sse.php manuell aktualisieren (in einem anderen Tab) der Demo Div Inhalt ändert sich! Ich habe versucht herauszufinden, was das Problem ist, aber ich habe keine Ideen mehr.

Irgendwelche Ideen?

Vielen Dank.

enter image description here

+0

ich spekulieren, aber in der Registerkarte Netzwerk an den HTTP-Header aussehen und den Kontext von https://www.mnot.net/cache_docs/ – Quentin

+0

Ihre Intervallfunktion ist falsch betrachten. versuchen Sie dies: 'var myVar = setInterval (loadDoc, 2000);' – Sysix

+0

GET Anfragen Cache .... So läuft das Web schnell, Header zeigen, dass es für die nächsten 7 Tage zwischengespeichert wird. – epascarello

Antwort

0

Nach weiterer Forschung - das Hinzufügen dieser Zeilen in der Spitze meiner sse.php Datei und diese Seite aktualisieren, löste mein Problem. Vielen Dank.

<?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(); 
?> 
-1

Ich hatte ein ähnliches Problem, das ich hier beschrieben:

AJAX function request stops previous load when called again - no jQuery please

Go diesen Code erhalte ich, wenn Werke für Sie geschrieben und überprüfen.

EDIT:

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

und die unterstützenden Funktionen:

Ein Anruf würde

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; 
} 
} 
+0

Darf ich Sie bitten, bitte etwas mehr Kontext um Ihre Antwort hinzuzufügen. Link-Only-Antworten sind schwer zu verstehen und können ungültig werden, wenn die Website nicht verfügbar ist oder nicht funktioniert. Es wird sowohl dem Fragesteller als auch zukünftigen Lesern helfen, wenn Sie die relevantesten Teile des Links/Blogs, auf den Sie sich beziehen, in diesem Beitrag selbst wiedergeben können. – RBT

Verwandte Themen