Duvida + Ajax

3 respostas
A

Pessoal,

Estou com uma duvida com relacao ao ajax. Tenho um radio box que qdo eu clico eu passo um valor e faco uma pesquisa no banco e ele me retorna alguns dados. A duvida vem neste ponto, eu gero o xml dessa forma

public void geraDatasAjax(ArrayList lista){
		
String xml = "";
		
try{
Hashtable hashtable = new Hashtable();
			
for(int i = 0; i < lista.size(); i++){
  hashtable = (Hashtable)lista.get(i);

xml += "<descricao>" + hashtable.get("posicao_dsc") + "</descricao>";
xml += "<codInicio>" + hashtable.get("posicao_cod") + "</codInicio>";
xml += "<codFim>"    + hashtable.get("posicao_cod") + "</codFim>";

}
			
geraXML(xml);
			
}catch(Exception e){
System.out.println(e.toString());
}
}

public void geraXML(String dadosXML) throws IOException {
		
StringBuffer sb = new StringBuffer();
		
sb.append("<meta http-equiv='content-type' content='text/xml;charset=iso-8859-1'>\n");
sb.append("<meta http-equiv='cache-control' content='no-cache'>\n");
sb.append("<meta http-equiv='pragma' content='no-cache'>\n");
sb.append("<meta http-equiv='expires' content='0'>\n");

String xml ="";
		
xml += "<?xml version='1.0' encoding='iso-8859-1'?>";
xml += "<dados>";
xml += 	dadosXML ;
xml += "</dados>";
		
sb.append(xml);
System.out.println(sb);

}

nesta minha classe eu comeco a montar a tabela que eu quero mostrar, ainda sem os dados.

public StringBuffer realizaOperacao(StringBuffer sb, ArrayList lista) {
		
Hashtable hashtable = new Hashtable();
		
sb.append("<div id='MontarGridDatas' style='position:absolute; width:220px; height:50px; z-index:100; left: 280px; top: 310px; display:none'>\n");
		
sb.append("\n<br />\n<table >");
sb.append("\n<tr class='listaheader'>");
sb.append("\n<td class='col305'>Processo</td>");
sb.append("\n<td class='col130 colcenter'>Início</td>");
sb.append("\n<td class='col130 colcenter'>Término</td>");
sb.append("\n</tr>");
		
geraDatasAjax(lista);
		
for(int i = 0; i < lista.size(); i++){
hashtable = (Hashtable) lista.get(i);

sb.append("\n<tr class='bordabaixo'>");
sb.append("\n<td><label>" + hashtable.get("posicao_dsc") + "</label><span class='obrigatorio'>*</span></td>");
sb.append("\n<td class='colcenter'><input type='text' name='" + hashtable.get("posicao_cod") +"inicio' class='textbox100'>");
sb.append("\n<a href=\"javascript:cal" + hashtable.get("posicao_cod") +"inicio.popup();\"><img src=\"/WORKATIS2/imagens/cal.gif\" class=\"calthumb\" alt=\"Clique aqui para selecionar uma data.\"></a>");
sb.append("\n</td>");
sb.append("\n<script language=\"JavaScript\">");
sb.append("\n	var cal" + hashtable.get("posicao_cod") +"inicio = new calendar2(document.forms['cadSolicitacao'].elements['"+ hashtable.get("posicao_cod") +"inicio']);");
sb.append("\n	cal" + hashtable.get("posicao_cod") +"inicio.year_scroll = true;");
sb.append("\n	cal" + hashtable.get("posicao_cod") +"inicio.time_comp = false;");
sb.append("\n</script>");

sb.append("\n<td class='colcenter'><input type='text' name='" + hashtable.get("posicao_cod") +"termino' class='textbox100' >");
sb.append("\n<a href=\"javascript:cal" + hashtable.get("posicao_cod") +"termino.popup();\"><img src=\"/WORKATIS2/imagens/cal.gif\" class=\"calthumb\" alt=\"Clique aqui para selecionar uma data.\"></a>");
sb.append("\n</td>");
sb.append("\n<script language=\"JavaScript\">");
sb.append("\n	var cal" + hashtable.get("posicao_cod") +"termino = new calendar2(document.forms['cadSolicitacao'].elements['"+ hashtable.get("posicao_cod") +"termino']);");
sb.append("\n	cal" + hashtable.get("posicao_cod") +"termino.year_scroll = true;");
sb.append("\n	cal" + hashtable.get("posicao_cod") +"termino.time_comp = false;");
sb.append("\n</script>");

}
		
sb.append("</div>\n");
		
sb.append("\n</table>\n");
sb.append("<hr /><br />\n");

return sb;

Imagino que isso esteja certo, agora vem a parte do javascript, que é onde eu estou emperrando tb !!! nao sei como eu devo montar o relatorio por lah ! Alguem pode me dar uma ajuda !

valew
Abs

3 Respostas

Pedrosa

Olá marsola2k, prefira exibir os resultados em JSON do que em XML, as requisições são muito mais rápidas porque o documento fica até 60% menor, como você já começou a brincar com o prototype seria uma ótima saída.

http://www.prototypejs.org/learn/json

http://www.json.org/

A

E ai Pedrosa,

to comecando agora com Ajax, tem algo pronto aqui e por isso que eu vou manter o mesmo e por isso que eu quero tentar entender o pq esta dando errado !!

valew

Pedrosa

A montagem desse html em classe java não fica muito nobre também, seu código com json ficaria mais ou menos assim:

JSONObject _json = new JSONObject();
List<JSONObject> _jlst = new ArrayList<JSONObject>();
for (SeuObj seuObj: lista) {
   JSONObject _jobj = new JSONObject();
  _jobj.put("descricao",seuObj.getDescricao());
  _jobj.put("codInicio",seuObj.getCodInicio());
  _jobj.put("codFim",seuObj.getCodFim());
  _jlst.add(_jobj); 
}
_json.put("datas",_jlst);
out.print(_json.toString());

Obtendo no JSP:

var xjson = eval('('+ data.responseText + ')');
var datas = xjson.datas;
for(i=0;i<datas.length;i++) {
     alert('descricao ' + datas[i].descricao);
     ...
}

Ou que tal ter menos esforço ainda:

http://www.vraptor.org/pt/ajax.html

Criado 21 de maio de 2007
Ultima resposta 21 de mai. de 2007
Respostas 3
Participantes 2