Recarregando a página enquanto uma solicitação Ajax em andamento fornece resposta e status vazios como zero
O navegador é o Firefox 3.0.10. Estou solicitando uma página usando o Ajax. A resposta está em andamento e pode estar em readyState menor que 4. Enquanto isso, estou tentando recarregar a página. A solicitação termina, dando uma resposta vazia.
Usei o alerta para encontrar qual sequência foi fornecida como texto de resposta. Suponho que a essa altura o estado pronto 4 seja atingido. Por que é uma string vazia?
Quando alertai o xmlhttpobject.status, ele exibiu 0.
Quando aviso o xmlhttpobject.statusText, ocorre uma exceção, indicando "NÃO DISPONÍVEL".
Quando eu leio no documentohttp://www.devx.com/webdev/Article/33024/0/page/2 disse para 3 e 4status
estatusText
estão disponíveis, mas quando testei, apenas o status está disponível, mas não o satausText.
Aqui está o código de exemplo.
Considere que solicitei uma página e minha função de retorno de chamada é a seguinte
function cb(rt)
{
if(rt.readyState==4)
{
alert(rt.status);
alert(rt.statusText); // which throws an exception
}
}
e meu script do lado do servidor é o seguinte
sleep(30);
//flushing little drop down code
Além destes, notei o seguinte.
Suponha novamente que estou solicitando o script acima usando o Ajax. Agora haverá um tempo ocioso de 30 segundos. Antes desses 30 segundos, pressiono refresh. Eu obtive xmlhttpobject.status como 0, mas ainda assim o navegador não recarregou a página até 30 segundos. Por quê?
Quando atualizo uma página antes que uma solicitação do Ajax seja concluída, o valor do status é definido como zero e o estado pronto como 4, mas a página ainda aguarda a resposta do servidor terminar.
O que está acontecendo?
A RAZÃO PARA EU ENFRENTAR ALGUMA COISA COMO ISSO É O SEGUINTE.
Sempre que faço uma solicitação do Ajax, se o processo for bem-sucedido, como inserir algo ou excluir algo, eu pop-up uma div informando que foi atualizada com êxito e recarregarei a página. Mas, se houver algum erro, não recarregarei a página, mas alertarei que não é possível processar esta solicitação.
Se o usuário recarregar a página antes que qualquer uma dessas solicitações seja concluída, eu recebo uma resposta vazia que, no meu cálculo, existe um erro no servidor. Então, eu estava depurando a resposta do Ajax para filtrar que a conexão foi interrompida porque o usuário pressionou recarregar. Portanto, desta vez, não quero exibir "não é possível processar esta solicitação" quando o usuário recarregar a página antes que a solicitação seja concluída.
Oh ... uma longa história. É uma descrição longa, para que eu possa fazer com que os especialistas entendam minha dúvida.
Então, o que eu quero formar acima.
Qualquer tipo de resposta iria clarear minha mente. Ou eu gostaria de dizer todo tipo de respostas.
EDIT: 19 dez. Se não obtiver resposta correta, excluirei esta pergunta e reescreverei com exemplos. Senão eu aceitarei depois de experimentar.
Vou criar um programa de demonstração e postarei o link aqui para que você possa entender o que estou enfrentando. Hoje é dia 29 de dezembro de 2010.