2013-08-18 18 views
5

Mi sto rompendo la testa su un progetto incorporato: Microchip ethernet/wifi. Ho una pagina web in cui i dati vengono caricati tramite Ajax. A causa dei limiti di dimensione, non sto usando jQuery, solo Javascript AJAX.Javascript Ajax smette di funzionare in Chrome

PROBLEMA: Sembra essere tutto buono in firefox. Ma in Chrome, si avvia e, se aggiorno, AJAX smette di funzionare (a volte, dopo ripetuti aggiornamenti). Nessun errore è registrato nella console.

ho creato una demo ridotta sul

avarachan.com/test4/ajaxTest.html. Utilizza solo lo mchp.js dalla demo del microchip. La pagina carica un numero da un'altra pagina tramite AJAX. Questo viene ripetuto 100 ms e, se non riesco a ottenere nulla in 5 secondi (cioè circa 50 tentativi), si verifica un timeout.

A recreate this error, aprire demo link in Chrome e continuare a rinfrescare. Ho un tempo di 5 secondi. Sto usando latest version of Chrome. Apprezzo qualsiasi suggerimento. Grazie.

NOTA: una volta che si rompe, anche se continuo a rinfrescare, non funzionerà. ma se chiudo la scheda e ne apro una nuova, funziona.

+2

auto inflitte DDoS avvio in t-Mius 5 minuti – Prisoner

+0

sono stato in grado di liberare il "blocco" nelle richieste eseguendo questo comando nella console JS: 'xmlhttp = new XMLHttpRequest(); Xmlhttp.open ("POST", 'ajaxXML.php', vero); xmlHttp.send (''); ' Dopo averlo fatto alcuni secondi dopo, ha ripreso a funzionare. –

+4

WireShark mostra che dopo un po ', il codice AJAX riceve "HTTP/1.1 304 non modificato" invece di "HTTP/1.1 200 OK". Penso che la risposta venga memorizzata nella cache da Chrome. Dai un'occhiata alla risposta accettata a questa domanda: http://stackoverflow.com/questions/7432361/adding-a-random-number-after-the-url – kol

risposta

2

WireShark indica che dopo un po ', il codice AJAX diventa HTTP/1.1 304 Not Modified anziché HTTP/1.1 200 OK. Penso che la risposta venga memorizzata nella cache da Chrome. È possibile aggiungere un argomento numerico casuale all'URL per impedire la memorizzazione nella cache (vedere here).

3

Grazie a @kol, abbiamo pensato che si trattasse di un problema di cache. Quindi ho modificato l'url con un numero casuale nell'argomento. Sembra che funzioni adesso.

+0

Prego :) – kol

+0

@kol Ho inviato una risposta bcz non ce n'era (pensavo ti meritassi il merito). Se puoi pubblicare il tuo commento come risposta, lo contrassegnerei sicuramente come accettato. :) – aVC

+0

Ok, grazie :) – 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) 
Problemi correlati