2013-08-18 17 views
5

Ich breche mir einen Kopf über ein Embedded-Projekt: Microchip Ethernet/Wifi. Ich habe eine Webseite, auf der die Daten über Ajax geladen werden. Aufgrund der Größenbeschränkungen verwende ich keine jquery, nur Javascript AJAX.Javascript Ajax funktioniert nicht mehr in Chrome

PROBLEM: Es scheint alles gut in Firefox zu sein. Aber in Chrome startet es und wenn ich aktualisiere, hört der AJAX auf zu arbeiten (manchmal nach wiederholten Aktualisierungen). In der Konsole wird kein Fehler protokolliert.

habe ich eine abgespeckte Demo auf

avarachan.com/test4/ajaxTest.html. Es verwendet nur die mchp.js von der Mikrochip-Demo. Die Seite lädt eine Nummer von einer anderen Seite über AJAX. Dies wird 100 ms wiederholt, und wenn ich in 5 Sekunden nichts bekomme (dh ~ 50 Versuche), wird die Zeit überschritten.

Um recreate this error, öffnen Sie die demo link in Chrome, und bleiben Sie erfrischend. Ich habe eine Zeit von 5 Sekunden. Ich verwende latest version of Chrome. Schätzen Sie irgendwelche Hinweise. Vielen Dank.

HINWEIS: Sobald es bricht, auch wenn ich auffrische, wird es nicht funktionieren. aber wenn ich den Tab schließe und einen neuen öffne, funktioniert es.

+2

selbst zugefügt ddos ​​in t-mius 5 Minuten initiiert – Prisoner

+0

konnte ich den "Block" in den Anforderungen befreien, indem Sie diesen Befehl in der JS-Konsole ausgeführt wird: 'xmlHttp = new XMLHttpRequest(); xmlHttp.open ("POST", "ajaxXML.php", true); xmlHttp.send (''); ' Nachdem ich das ein paar Sekunden später getan hatte, fing es wieder an zu arbeiten. –

+4

WireShark zeigt, dass Ihr AJAX-Code nach einer Weile statt HTTP/1.1 200 OK "HTTP/1.1 304 Not Modified" erhält. Ich denke, die Antwort wird von Chrome zwischengespeichert. Überprüfen Sie die akzeptierte Antwort auf diese Frage: http://stackoverflow.com/questions/7432361/adding-a-random-number-after-the-url – kol

Antwort

2

WireShark zeigt, dass Ihr AJAX-Code nach einer Weile HTTP/1.1 304 Not Modified statt HTTP/1.1 200 OK erhält. Ich denke, die Antwort wird von Chrome zwischengespeichert. Sie könnten ein Argument mit einer Zufallszahl an die URL anhängen, um das Zwischenspeichern zu verhindern (siehe here).

3

Dank @kol, dachte, es war ein Cache-Problem. Also habe ich die URL mit einer zufälligen Zahl im Argument geändert. Scheint jetzt zu arbeiten.

+0

Gern geschehen :) – kol

+0

@kol Ich habe eine Antwort bcz gab es keine (dachte, du verdienst den Kredit). Wenn Sie Ihren Kommentar als Antwort posten können, würde es auf jeden Fall als akzeptiert markieren. :) – aVC

+0

Okay, danke :) – kol

0
function getXMLHTTP() { //function to return the xml http object 
var xmlhttp=false; 
try{ 
xmlhttp=new XMLHttpRequest(); 
} 
catch(e){  
try{    
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP"); 
} 
catch(e){ 
try{ 
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
} 
catch(e1){ 
xmlhttp=false; 
} 
} 
} 

return xmlhttp; 
} 

function getdef() 
{ 
alert('str'); 
if (str=="") 
{ 
document.getElementById("def1").innerHTML=""; 
return; 
} 
if (window.XMLHttpRequest) 
Verwandte Themen