cmd Posted May 22, 2012 at 06:25 PM Report #457450 Posted May 22, 2012 at 06:25 PM Boas a todos, Estou a desenvolver um website em que ele chama uma página e carrega dentro de uma div. O problema é que o conteúdo da página externa não "assume" qualquer tipo de estilo. Como o posso resolver? Cumps.cmd
Rechousa Posted May 23, 2012 at 12:05 AM Report #457508 Posted May 23, 2012 at 12:05 AM Olá, Como é que estás a carregar o conteúdo? Pedro Martins Sharing is Knowledge! http://www.linkedin.com/in/rechousa
cmd Posted May 24, 2012 at 10:11 AM Author Report #457812 Posted May 24, 2012 at 10:11 AM Estou a usar Ajax. Queres que mostre o código? Cumps.cmd
Rechousa Posted May 24, 2012 at 10:23 AM Report #457815 Posted May 24, 2012 at 10:23 AM Olá, Queres que mostre o código? Ajudava 🙂 Já experimentaste usar o método load() do jQuery? Mais info: http://api.jquery.com/load/ Pedro Martins Sharing is Knowledge! http://www.linkedin.com/in/rechousa
cmd Posted May 28, 2012 at 07:39 AM Author Report #458460 Posted May 28, 2012 at 07:39 AM (edited) Eu estou a usar Javascript "normal". Aqui está o código: function AbrePagina(url, target,cod) { //variavel utilizada para impedir o caching, de forma a garantir que carrega sempre o ficheiro do servidor e não a copia em cache var getdate = new Date(); if(xmlhttp) { //a variavel dados vai conter o método para o GET (?dados=) e completar com o código da mensagem (cod) que se pretende visualizar var dados = "?dados=" + cod; //quando houver alterações no estado executa a função de resposta respectiva xmlhttp.onreadystatechange = function() {respostaAbrePagina(url,target) } //abre a página correspondente utilizando o método GET e passando os parametros correspondentes xmlhttp.open("GET",url + dados,true); //o codigo ref siginifa que o header deverá ser refrescado if (cod=="ref") { refrescaHeader(); } xmlhttp.send(""); } } function respostaAbrePagina(url, target) { //o estado varia entre 0 e 4, o unico que interessa é o 4 //se o estado for 4 significa que o pedido foi terminado e a resposta está pronta if (xmlhttp.readyState == 4) { //o estado varia entre 200 e 404, sendo que o 404 significa "não encontrado" //se o estado for 200 significa que a página foi encontrada e está tudo "OK" if(xmlhttp.status == 200) { //caso tudo acima tenha sido bem sucedido vai actualizar o conteudo da div "message" com a resposta proveniente da página de onde chegou a resposta document.getElementById(target).innerHTML=xmlhttp.responseText; } else { //caso o estado seja o 404, informa o utilizador que ocorreu um erro alert("Ocorreu um erro. Se o problema persistir, por favor, contacte o Administrador."); } } } Edited May 28, 2012 at 04:34 PM by softklin Adicionado o GeSHi Cumps.cmd
brunoais Posted May 28, 2012 at 04:04 PM Report #458577 Posted May 28, 2012 at 04:04 PM O teu código está completamente à mercê de um ataque man-in-the-middle. Devias de ter o teu código completamente limitado de maneira a que ele esteja preparado para receber só dados a partir do servidor e não HTML do servidor. Experimenta usar JSON ou XML para isso. 1 Report "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
cmd Posted May 28, 2012 at 09:22 PM Author Report #458691 Posted May 28, 2012 at 09:22 PM O que eu estou a fazer é a preencher o conteúdo da página externa dentro da div. Como o posso fazer sem estar sujeito a esse tipo de ataques? Cumps.cmd
brunoais Posted May 28, 2012 at 09:51 PM Report #458706 Posted May 28, 2012 at 09:51 PM Não envies código HTML a partir do servidor em resposta a uma "query" usando AJAX e não aceites código HTML no código que usa o XMLHttpRequest. Usa JSON ou XML para transferir os dados. Gera os nodes do DOM dinamicamente usando os dados que recebes a partir do servidor. Ex: Tens um selectbox no sistema. Podes enviar para o cliente (isto é JSON mas tb podia ser XML): { "select5" : [ ["text1", "value1"], ["text2", "value2"], ["text3", "value3"] ] } Depois, para gerar e meter no DOM: // ... var selectBox = document.createElement('select'); for(var i = 0; i < someObject['select5'].length; i++){ var option = document.createElement('option'); option.value = someObject['select5'][i][0]; option.text = someObject['select5'][i][1]; selectBox.appendChild(option); } // ... (nota: espero não ter cometido erros de sintaxe) "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
cmd Posted May 29, 2012 at 09:27 AM Author Report #458777 Posted May 29, 2012 at 09:27 AM O teu "someObject" é declarado onde? Cumps.cmd
brunoais Posted May 29, 2012 at 01:31 PM Report #458869 Posted May 29, 2012 at 01:31 PM É vdd, esqueci-me de indicar isso! someObject = JSON.parse(xmlhttp.responseText) Vê sobre o JSON aqui: https://developer.mo...ects/JSON/parse "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
cmd Posted May 31, 2012 at 04:27 PM Author Report #459509 Posted May 31, 2012 at 04:27 PM Vou tentar implementar JSON! Obrigado Cumps.cmd
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now