Ajax, nada mais é que chamar uma url que retorna XML em segundo plano com JavaScript…
Certo? Então não importa o que vc está chamando, desde que o resultado seja XML…
:arrow: Primeiro tente pegar uma pagina que retorna um xml estático e chamar de uma página html
Para o fazer a chamada do XML com o JavaScript eu usso isso aqui:
http://webfx.eae.net/dhtml/xmlextras/xmlextras.html
http://webfx.eae.net/dhtml/xmlextras/xmlextras.zip
Veja no exemplo como é feita a leitura dá pagina xml!
Depois que vc for bem sucedido nessa tarefa, crie uma página .jsp que que leia uma collection e gere um xml…
o mesmo procedimento de chamar o xml estático será o para chamar o xml do struts…
Veja como eu faço a chamada do xml na em uma aplicação que eu tenho
var xmlHttp = XmlHttp.create();
var async = true;
xmlHttp.open("GET", "http://localhost:8080/app/action.do", async);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
lerXml(xmlHttp.responseXML);
}
xmlHttp.send(null);
:idea: segue abaixo como fazer a leitura do xml
XML Exemplo
<?xml version="1.0" encoding="ISO-8859-1"?>
<saida>
<codigo>-1<codigo>
<msg erro="msg erro" motivo="msg motivo" />
</saida>
function lerXml(xmlDoc) {
if (!xmlDoc) {
alert("ERRO: XML inválido!");
return;
}
var codigo = getElementTextNS(null, "codigo", xmlDoc, 0);
if (codigo == "-1") {
var msg = xmlDoc.getElementsByTagName("msg");
alert(
msg.getAttribute("erro") + "\n" +
msg.getAttribute("motivo")
);
}
else {
// Código ...
}
}
// Ler tags sem atributos
function getElementTextNS(prefix, local, parentElem, index) {
var result = "";
result = parentElem.getElementsByTagName(local)[index];
if (result) {
try {
if (result.childNodes.length > 1) {
return result.childNodes[1].nodeValue;
} else {
return result.firstChild.nodeValue;
}
}
catch(e) {
return "n/a"
}
} else {
return "n/a";
}
}