Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom, quando comecei a estudar HTML uma das primeiras coisas que aprendi foi Iframe (há muitos anos)... mas aprendendo php e mysql comecei a fuçar em AJAX, esquecendo das iframes... sei que são tecnologias um pouco diferentes, porém a função é praticamente a mesma também.
Então estou pondo em questão qual é definitivamente a melhor escolha, ex. para enviar formulários, para sistemas de paginação, comentários, etc...
O código do AJAX é bem complexo se comparado as iframes, estou usando em um sistema para enviar um formulário e estou na dúvida.
Usando AJAX fica assim:
<script type="text/javascript">
var navegador = navigator.userAgent.toLowerCase(); //Cria e atribui à variável global
var xmlhttp;
//Função que inicia o objeto XMLHttpRequest
function objetoXML() {
if (navegador.indexOf('msie') != -1) { //Internet Explorer
var controle = (navegador.indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'; //Operador ternário que adiciona o objeto padrão do seu navegador (caso for o IE) à variável 'controle'
try {
xmlhttp = new ActiveXObject(controle); //Inicia o objeto no IE
} catch (e) { }
} else { //Firefox, Safari, Mozilla
xmlhttp = new XMLHttpRequest(); //Inicia o objeto no Firefox, Safari, Mozilla
}
}
function enviarForm(url, campos, destino) { //Função que envia o formulário
var elemento = document.getElementById(destino); //Atribui à variável 'elemento' o elemento que irá receber a página postada
objetoXML(); //Executa a função objetoXML()
if (!xmlhttp) { //Se o objeto de 'xmlhttp' não estiver true
elemento.innerHTML = 'Impossível iniciar o objeto XMLHttpRequest.'; //Insere no 'elemento' o texto atribuído
return;
} else {
elemento.innerHTML = 'Carregando...'; //Insere no 'elemento' o texto atribuído
}
xmlhttp.onreadystatechange = function () { //Se a requisição estiver completada
if (xmlhttp.readyState == 4 || xmlhttp.readyState == 0) {
if (xmlhttp.status == 200) { //Se o status da requisição estiver OK
elemento.innerHTML = xmlhttp.responseText; //Insere no 'elemento' a página postada
} else {
elemento.innerHMTL = 'Página não encontrada!'; //Insere no 'elemento' o texto atribuído
}
}
}
xmlhttp.open('POST', url+'?'+campos, true); //Abre a página que receberá os campos do formulário
xmlhttp.send(campos); //Envia o formulário com dados da variável 'campos' (passado por parâmetro)
}
</script>
<form action="POSTAR.php" method="post" onsubmit="setarCampos(); enviarForm('POSTAR.php', campos, 'divResultado'); return false;">
<input type="text" name="nome" id="nome">
<textarea name="comentario" id="comentario"></textarea>
<input type="submit" value="Enviar">
</form>
<div id="divResultado"/>
<script>
function setarCampos() {
campos = "nome="+document.getElementById('nome').value+"&comentario="+document.getElementById('comentario').value;
}
</script>
</div>
E usando Iframe ficaria assim:
<form action="POSTAR.php" method="post" target="iframe">
<input type="text" name="nome">
<textarea name="comentario"></textarea>
<input type="submit" value="Enviar">
</form>
<iframe src="POSTAR.php" width="650" height="500" name="iframe">
Como podem perceber o código com AJAX é imensamente maior que usando a tag iframe, gostaria de opiniões para definir qual é a melhor escolha a ser feita, obrigado pessoal
Carregando comentários...