Ir para conteúdo
Fórum Script Brasil
  • 0

AJAX


shaq

Pergunta

Bom dia,

Estou a tentar implementar "auto-refresshing" numa pagina(lista de jogos, de site de quiz online)com o seguinte código:

funcHeaders.js:

/*AJAX STUFF*//************************************************/
var xmlHttp;
function HandleReply() {
    if(xmlHttp.readyState == 4) {
        alert("xmlHttp.responseText: "+xmlHttp.responseText);
        thisJSPhandle(xmlHttp.responseText);
    }
}
function sendRequest(str) {
    alert("sending ajax request, str: "+str);
    xmlHttp = GetXmlHttpObject();
    var url = "handleAJAX.jsp?flagMsg="+str;
    xmlHttp.open("GET", url, true);
    xmlHttp.onreadystatechange=HandleReply;
    xmlHttp.send(null);
}
function GetXmlHttpObject() {
    try { return new ActiveXObject("Msxml2.XMLHTTP");    } catch(e) {} // Internet Explorer
    try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} // Internet Explorer
    try { return new XMLHttpRequest();                   } catch(e) {} // Firefox, Opera 8.0+, Safari
    alert("XMLHttpRequest not supported");
    return null;
}
/**************************************************************/
list.jsp(header):
&lt;script src = "funcHeaders.js" language="JavaScript"></script>
&lt;script type="text/javascript">
        window.onload = function()      {setInterval(sendRequest("GameList"),1000);};
        function thisJSPhandle(response){
            alert("thisJSPhandle,response: "+response);
            if(response==true){
                window.location = "handleList.jsp";
            }
        }
        function validaInput(){
            var room=document.forms["list"]["room"].value;
            if(validaStr(room)){
                    return true;
            }else{
                alert("Invalid User Room Name!Insert Again");
                return false;
            }
        }
</script>

Mas acontece que a função sendRequest("GameList") só é chamada quando a pagina é carregada, e não de 1 em 1 segundos como era pretendido. O que estou a fazer de errado?

Obrigado desde de já,

cumps,

Rui Miranda

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Tenta chamar setInterval da seguinte maneira:

window.onload = function()      {setInterval('sendRequest("GameList")',1000);};
Um abraço.
Boas, resolveu a situação anterior, obrigado :) funcHeaders.js:
/*AJAX STUFF*//************************************************/
var xmlHttp;
function HandleReply() {
    if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
        thisJSPhandle(xmlHttp.responseText);
    }
}
function sendRequest(str) {
    xmlHttp = null;
    xmlHttp = GetXmlHttpObject();
    var url = "handleAJAX.jsp?flagMsg="+str;
    xmlHttp.open("GET", url, true);
    xmlHttp.onreadystatechange=HandleReply;
    xmlHttp.send(null);
}
function GetXmlHttpObject() {
    try { return new ActiveXObject("Msxml2.XMLHTTP");    } catch(e) {} // Internet Explorer
    try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} // Internet Explorer
    try { return new XMLHttpRequest();                   } catch(e) {} // Firefox, Opera 8.0+, Safari
    alert("XMLHttpRequest not supported");
    return null;
}
/**************************************************************/
list.jsp(header):
&lt;script src = "funcHeaders.js" language="JavaScript"></script>
&lt;script type="text/javascript">
        window.onload = function(){setInterval('sendRequest("GameList")',3000);};
        function thisJSPhandle(response){
            response = trim(response);
            if(response == "true"){
                window.location.href = "handleList.jsp";
            }else{
                setInterval('sendRequest("GameList")',3000);
            }
        }
        function validaInput(){
            var room=document.forms["list"]["room"].value;
            if(validaStr(room)){
                    return true;
            }else{
                alert("Invalid User Room Name!Insert Again");
                return false;
            }
        }
</script>

Já tenho o auto-refresh a funcionar a 100pct para Mozilla,Chrome, etc.

Mas para IE não funciona bem (o meu resquest AJAX à jsp que verifica se é necessário refresh retorna sempre true, mesmo quando a msg não está disponivel).

Obrigado desde de já,

cumps,

Rui Miranda

Link para o comentário
Compartilhar em outros sites

  • 0

Solution:

Karl Oakes • This sounds like IE's caching problem with GET AJAX requests.. There are a few methods to resolve this, which can be performed either server-side or client-side. To resolve this client-side, just send a random querystring param along with the URL, i.e. var url = "handleAJAX.jsp?flagMsg="+str+"&random="+Math.random(); in your js.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...