Ajax com PHP Sem XmlHttpRequest
E ae Familia Imasters, beleza???
Esse post eh pra ensinar a fazer AJAX sem o objeto XmlHttpRequest.
O primeiro exemplo eh pra fazer requisições internas e o segundo requisições externas.
Espero q gostem!!!
Exemplo 01 - Requisição Interna
page1.php -> Pagina que será visualizad sem refresh
$html = ‘O AJAX foi executado com sucesso sem<br> o auxilio do XmlHttpRequest Object<br><a href=\”index2.htm\”>Executar AJAX Requisição Externa</a>’;
?>
div = document.getElementById(’interno’);
div.innerHTML = ‘<?php echo $html; ?>’;
engine.js -> arquivo que faz a magica
url = document.location.href;
xend = url.lastIndexOf(”/”) + 1;
var base_url = url.substring(0, xend);
function ajax_do (url) {
// verifica se a url inicia com http
if (url.substring(0, 4) != ‘http’) {
url = base_url + url;
}
// cria um novo elemento JS
var jsel = document.createElement(’SCRIPT’);
jsel.type = ‘text/javascript’;
jsel.src = url;
// Adiciona o elemento JS (portanto executando a chamada “AJAX)
document.body.appendChild (jsel);
}
index.htm -> pagina que executa o AJAX Requisição Interna
<head>
<title>Aprendendo a Usar AJAX sem XmlHttpRequest Object</title>
<script type=”text/javascript” src=”engine.js”></script>
</head>
<body style=”font: 12px Tahoma; color:#003399; font-weight:bold”>
<center><input type=”button” onclick=”ajax_do (’page1.php’);” value=”Executar AJAX - Requisição Interna” /></center>
<center>O Conteudo aparecerá abaixo dessa linha</center><br><br>
<div id=”interno” style=”font: 12px tahoma; text-align:center; color:#FF0000; font-weight:bold;”><br>
</div>
</body>
</html>
Exemplo 02 - Requisição Externa
Nesse segundo exemplo, foi implementado uma nova funcao no engine.js
e um arquivo que verifica e trata o arquivo externo. Segue abaixo.
index2.htm -> pagina que executa o AJAX Requisição Externa
<head>
<title>Aprendendo a Usar AJAX sem XmlHttpRequest Object</title>
<script type=”text/javascript” src=”engine.js”></script>
</head>
<body style=”font: 12px Tahoma; color:#003399; font-weight:bold”>
<center><input type=”button” onclick=”ajax_get (’http://www.imasters.com.br’,'externo’);” value=”Executar AJAX - Requisição Externa” /></center>
<center>O Conteudo aparecerá abaixo dessa linha<br><a href=”index.htm”>Executar AJAX - Requisição Interna</a></center><br><br>
<div id=”externo” style=”font: 12px tahoma; text-align:center; color:#FF0000; font-weight:bold;”><br>
</div>
</body>
</html>
engine.js -> arquivo que faz a magica implementado
// pega a url base
url = document.location.href;
xend = url.lastIndexOf(”/”) + 1;
var base_url = url.substring(0, xend);
function ajax_do (url) {
// verifica se a url inicia com http
if (url.substring(0, 4) != ‘http’) {
url = base_url + url;
}
// cria um novo elemento JS
var jsel = document.createElement(’SCRIPT’);
jsel.type = ‘text/javascript’;
jsel.src = url;
// Adiciona o elemento JS (portanto executando a chamada “AJAX)
document.body.appendChild (jsel);
}
// Funcao que faz a requisição do arquivo externo
// Pega conteudo externo
function ajax_get (url, el) {
// Verifica se o elemento passado eh um objeto ou uma id-string?
if (typeof(el) == ’string’) {
el = document.getElementById(el);
}
// Valida el
if (el == null) { return false; }
// verifica se a url inicia com http
if (url.substring(0, 4) != ‘http’) {
url = base_url + url;
}
// Cria a URL a ser requisitada
getfile_url = base_url + ‘getfile.php?url=’ + escape(url) + ‘&el=’ + escape(el.id);
// Ajax em acao
ajax_do (getfile_url);
return true;
}
getfile.php -> arquivo que verifica e trata o arquivo externo
// recebe a URL e a div
if (!isset($_GET['url'])) { die(); } else { $url = $_GET['url']; }
if (!isset($_GET['el'])) { die(); } else { $el = $_GET['el']; }
// Verifica se a URL comeca com http
if (substr($url, 0, 4) != ‘http’) {
// Mensagem de erro
echo ‘alert(\’Erro de segurança:; URL Incorreta!\’);’;
die();
}
// Tenta e pega o conteudo
$data = @file_get_contents($url);
if ($data === false) {
// Set error
echo ‘alert(\’Não foi possivel localizar “‘ . $url . ‘”\’);’;
die();
}
// Escape dos dados
$data = str_replace(”‘”, “\’”, $data);
$data = str_replace(’”‘, “‘+String.fromCharCode(34)+’”, $data);
$data = str_replace (”\r\n”, ‘\n’, $data);
$data = str_replace (”\r”, ‘\n’, $data);
$data = str_replace (”\n”, ‘\n’, $data);
?>
el = document.getElementById(’<?php echo $el; ?>’);
el.innerHTML = ‘<?php echo $data; ?>’;
Veja o Resultado: AJAX sem XmlHttpRequest Object
Eh isso ai. Espero que seja util pra vcs como esta sendo pra mim.
Direto do Forúm Imasters

