Ajax + servlet

2 respostas
K

Olá...

preciso de uma ajuda.
Estou tentando fazer uma javascript(ajax) para enviar algo para a servlet e retornar para a jsp.
No IE funciona beleza, mas no Ffox ele dá pau.
Quando ele entra na linha [var texto = req.responseText;] ele não sei pq dá algum tipo de pau.
Eu sei que é ali, pq já coloquei vários alerts e quando ele entra em req.onreadystatechange=2 ele começa a executar outras funções
de javascript que não estão aqui no post mas tenho no meu código.
Alguém sabe o pq ou pelo menos explicar isso?

var req = null;
var isIE;
var invalidTime = "true";
var status;
function verificaAgenda(total){
	status = "true";
	qtdLinhas = parseInt(document.getElementById("qtdLote").value);
	agenda	= new Array();
	horas 	= new Array();
	minutos	= new Array();
	lotesInvalidos = new Array();
	j = 1;
	
	for (i=1; i<=qtdLinhas; i++){
		agenda[i] = parseInt(document.getElementById('agendaLote'+i).value);
		if (agenda[i] == 0){
			horas[i] 	= parseInt(document.getElementById('hora'+i).value);
			minutos[i]	= parseInt(document.getElementById('minuto'+i).value);
			requisicaoAjax(horas[i],minutos[i]);	
			if (invalidTime == "true"){
				lotesInvalidos[j] = i;				
				j++;
			}
		}
	}
	if (status == "false"){
		var stringErro = "Verifique o horário de agendamento da seção: <br/>"
		for (k=1; k<lotesInvalidos.length; k++){
			stringErro =stringErro + "[<b>"+lotesInvalidos[k]+"</b>] ";
		}
		document.getElementById("msgAgendamento").innerHTML=stringErro;
		openModal('msgAlert',326,160);
	} else if (status == "true"){
			VerificaCampo(total);
	}
}

function requisicaoAjax(horas, minutos){     
	if (window.ActiveXObject) {
		try {
			req = new ActiveXObject('Microsoft.XMLHTTP');
			isIE = true;
		} catch (e) {
			try {
				req = new ActiveXObject('Msxml2.XMLHTTP');
				isIE = true;
			} catch (e) {
				req = null;
			}
		}    	
	} else if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();    
		if (req.overrideMimeType) {
                req.overrideMimeType('text/xml');
        }
	}
	if(req != null){  
		var url = "../servlet/controle.AjaxTime?horas="+horas+"&minutos="+minutos;    
		req.onreadystatechange = statusAjax;    
		req.open('GET',url,false);    
		req.send(null);  
	}
}

function statusAjax(){  
		if(req.readyState == 4 && req.status == 200){  	
		var texto = req.responseText;
		if (texto == "false"){
			status = "false";
			invalidTime = "true";
		} else {			
			invalidTime = "false";
		}			  
	}
}

2 Respostas

jgbarros

Remova as linhas 53 e 54.

Inclua o código abaixo após a linha 60 e antes da 61. Uma dia: Faça um JS separado para o AJAX.

// Se o método de envio for POST, altera o tipo MIME para o envio de dados
   if (method == "POST")
      httpRequest.setRequestHeader('Content-Type', "application/x-www-form-urlencoded; charset=ISO-8859-1");
rponte

Olá,

Com exceção do caso de aprendizagem, na minha opinião pessoas que implementam AJAX na mão sofrem de desvio bipolar :wink:

Aconselho você a utilizar algum framework para isso, assim você seria bem mais produtivo. O que realmente aconselho -caso você não esteja trabalhando com JSF- é o DWR, ele é o melhor framework AJAX para Java, sem dúvida.

Site,
http://getahead.org/dwr/

Bom lugar para aprender sobre o framework,
http://www.handersonfrota.com.br/artigos-tutoriais/dwr/

Abraços.

Criado 14 de maio de 2008
Ultima resposta 14 de mai. de 2008
Respostas 2
Participantes 3