1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajax altera-me as tags

Discussão em 'Web Development' iniciada por silvino, 1 de Outubro de 2008. (Respostas: 2; Visualizações: 464)

  1. silvino

    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: 1 de Outubro de 2008
  2. skandal

    skandal Power Member

    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
     
  3. silvino

    silvino Power Member

    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.
     

Partilhar esta Página