Ajax altera-me as tags

silvino

Power Member
Olá,

Estou com um problema no meu "ajax", já procurei no google mas nada é conclusivo.
Tudo funciona aparentemente bem no que toca a funcionalidade, o ajax faz o pedido e
trata a reposta como é esperado. Mas apartir do momento em que chamo a função
ajax, toda a página que foi escrita a unha em xhtml strict passa automaticamente para
html, como se converte-se todas as tags. Isto leva a alguns problemas de xhtml.

Aqui ficam as funções javascript,

Função xht, realiza o pedido ao servidor.
Parametros;
url -> url para o ficheiro php que tratará o pedido
param -> parametros\variaveis neste caso tudo pelo método post
elev -> elemento do DOM velho que será substituido na pagina html pela resposta
elen -> novo elemento que contem a resposta

Código:
function xht(url, param, elev, elen){
    var http = new XMLHttpRequest();
    http.open("POST", url, true);
    
    http.overrideMimeType('text/html');
    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http.setRequestHeader("Content-length", param.length);
    http.setRequestHeader("Connection", "close");
    
    http.onreadystatechange = function() {
        if(http.readyState == 4 && http.status == 200) {
            var resp=http.responseText;
            if(typeof(elen) == "undefined"){
                alert(resp.childNodes[0]);
            }
            trata(resp, elev, elen);
        }
    }
    http.send(param);
}
Função trata a resposta do servidor
Parametros;
resp -> resposta dada pelo servidor
elev -> id do elemento a ser removido
elen -> id do elemento a ser acrescentado com a resposta
Código:
function trata(resp, elev, elen){
var novo = document.createElement("div");
novo.setAttribute("id", elen);
novo.innerHTML=resp;

var superior = document.getElementById(elev).parentNode;
var velho = document.getElementById(elev);

superior.removeChild(velho);
superior.appendChild(novo);
}
 
Última edição:
não olhei para as funções que criaste nem para o problema em si, mas reparei que tens a tua propria função para chamar o ajax.... esquece lá isso :P

Usa Jquery, vai-te ajudar tanto no ajax (pq tem a função a funcionar direitinho), tanto como para mexer na pagina, onde tens funções que te facilitam a tarefa.

Jquery
 
Sim, eu sei que deveria utilizar alguma librarias já existentes, mas permite-me a analogia, estou apenas a pregar uma tacha pelo que não me parece necessário um martelo pneumático.
 
Back
Topo