Bom Dia Pessoal!
Estou iniciando meus estudos com ajax
estou fzd um teste onde retorno por ResponseXML um arquivo xml com os dados solicitados.
eu gostaria de saber qual a melhor maneira de tratar um erro no ajax…
caso a minha servlet retorne algum erro como faço para passar isso pro ajax? através do próprio XML?
Segue servlet:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
int ano = new Integer(request.getParameter("idade"));
String msg = null;
ArrayList list1 = new ArrayList();
list1.add("José Augusto");
list1.add("Bruno César");
list1.add("João Eloy");
ArrayList list2 = new ArrayList();
list2.add("Beatriz");
list2.add("Rafaela");
list2.add("Carolina");
ArrayList list = new ArrayList();
try {
if (ano == 1) {
list = list1;
}
if (ano == 2) {
list = list2;
}
out.write("<?xml version='1.0' ?>");
out.write("<root>");
for (int i=0; i<list1.size(); i++) {
out.write("><nome>"+list.get(i)+"</nome>");
}
out.write("</root>");
} finally {
out.close();
}
}
Segue abaixo meu html
<script type="text/javascript">
function loadXMLDoc()
{
document.getElementById("myDiv").innerHTML="Carregando...";
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var xml = xmlhttp.responseXML;
var rootNode = xml.getElementsByTagName("root").item(0);
var nomeNode = rootNode.getElementsByTagName("nome");
document.getElementById("myDiv").innerHTML="<br>";
document.getElementById("myDiv").innerHTML+="<br>";
//document.getElementById("myDiv").innerHTML+="<br>";
//document.getElementById("myDiv").innerHTML+="<input type='text' size='15' value='"+nomeNode.item(0).firstChild.data+"' />";
//document.getElementById("myDiv").innerHTML+="<br>";
//document.getElementById("myDiv").innerHTML+="<input type='text' size='15' value='"+nomeNode.item(1).firstChild.data+"' />";
var nomeNodeSize = nomeNode.length;
for (i = 0; i<nomeNodeSize; i++) {
document.getElementById("myDiv").innerHTML+="<input type='text' size='15' value='"+nomeNode.item(i).firstChild.data+"' />";
document.getElementById("myDiv").innerHTML+="<br>";
}
}
}
var idade = document.getElementById("idade").value;
var url = "TesteAjax?idade="+idade;
xmlhttp.open("GET", url,true);
xmlhttp.send();
}
function check(){
if (document.cad.old.value > 2){
document.cad.old.backgroundColor="red";
document.getElementById("myDiv").innerHTML="<br>Número digitado inválido";
return false;
} else {
return true;
}
}
</script>
<div id="myDiv1"><h2>Veja só como o Ajax é legal</h2></div>
<form name="cad">
Insira o número da família: <input type="text" id="idade" name="old" size="3"/> <br>
<button type="button" onclick="if (check()){loadXMLDoc()}" >Mostrar!</button>
</form>
<div name="div" id="myDiv">
</div>
Pois entao, está rodando legalzinho, faço a validação pelo Javascript, mas além disso quero ter uma validação por trás do servidor, na servlet…
caso retorne erro, gostaria de passar isso pro ajax pra que ele mostre um erro.
pensei em criar uma tag no xml com nome erro… mas nao sei se é a melhor maneira.
Desde ja agradeço!