Codigos Fonte, Artigos e Dicas
Jquery: Método .load()
Resumindo a função desse método: Ele carrega uma determinada página HTML e injeta o conteúdo dela dentro de um elemento DOM, o que é DOM?
Document Object Model (DOM) ou Modelo de Objeto Documental em português, é uma plataforma de interface e linguagem neutra que permite que programas e scripts acessar e atualizar dinamicamente o conteúdo, estrutura e estilo de documentos. DOM define um caminho padronizado para acessar e manipular elementos HTML.
Este é um exemplo de hierarquia sobre os elementos HTML.
Imagem retirada do w3school.
Agora voltando ao foco, você já entendeu que com o método .load() podemos carregar qualquer conteúdo de outra página dentro de qualquer elemento HTML, essa é a principal característica do Ajax, vamos a sintaxe:
load( url, [data], [callback] )
- URL -> A url da página HTML à ser carregada
- [data] -> Dados a serem enviados ao servidor, usando POST.
- [callback] -> Com esse parâmetro, você pode pegar os dados de retorno e tratá-los como quiser.
Exemplo 1:
$('#conteudo').load("dados.html");
Aqui simplesmente carregamos o conteúdo da página ‘dados.html‘ para dentro do elemento que tem a ID ‘conteudo‘.
Exemplo 2:
$('#conteudo').load("dados.html #cont2 li");
Neste outro caso, especificamos que queremos somente o conteúdo da TAG ‘<li>‘ que se encontra dentro da DIV id=’cont2′.
Exemplo 3:
$('#conteudo').load("dados.php?nome=AlexandreSantos");
Agora carregamos o conteúdo da página ‘dados.php‘ enviando pelo método GET a variável ‘nome‘ com o valor ‘AlexandreSantos‘.
Exemplo 4:
$('#conteudo').load("dados.php", {nome: "Alexandre Santos"});
Agora ao invés de usarmos o método GET para enviar valores para outra página usamos o POST, definindo os valores a serem enviados pelo segundo parâmetro.
Agora vamos por em prática, vocês podem ver um exemplo do resultado final aqui: http://diariodecodigos.info/exjqload/
index.php
<html>
<head>
<script language="javascript">
$(document).ready(function(){
$('#botao').click(function(){
$('#conteudo').load("dados.html #cont2 li");
}); // FIM $('#botao').click();
}); // FIM $(document).ready();
</script>
</head>
<body>
<p> A Baixo temos uma DIV chamada Conteúdo da qual é o elemento que receberá o conteúdo HTML</p>
<p> <a href="#" id="botao">Clique Aqui</a></p>
<hr color="#0000FF" />
<div id='conteudo'>
</div>
</body>
dados.html
Esse é a outra página HTML da qual tem esse conteúdo!
<div id="cont2">
conteúdo dentro da DIV 'cont2'
<ul>
<li>Link 1</li>
<li>Link 2</li>
<li>Link 3</li>
</ul>
</div>
Posts Relacionados
| Imprimir artigo | Este artigo foi escrito por Alexandre Santos em 11 11UTC outubro 11UTC 2009 às 17:47, e está arquivado em JQuery. Siga quaisquer respostas a este artigo através do RSS 2.0. Você pode deixar uma resposta ou fazer um trackback do seu próprio site. |

há 2 anos atrás
êita só post bom =D
[Reply]
há 2 anos atrás
Tenho um menu em flash e abaixo uma div conteúdo onde abrem as páginas chamadas, porém uma destas páginas tem uma galeria de fotos jquery que não funciona de maneira alguma quando a página é chamada pelo ajax. OBS Ela só funciona se eu der um refresh somente na div e é ai que esta o problema o código que uso carrega a página sem dar refresh na página toda.. Segue a função e o linlk do botão em flash.
[Reply]
há 2 anos atrás
tem o link do exemplo?
se tiver passa para agente…
[Reply]
há 2 anos atrás
O ajax esta assim
function abrirPag(url){
//Obtém o objeto HTML
objetoHTML=document.getElementById(“conteudo”);
//Exibe o loader
objetoHTML.innerHTML=”";
try{
xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);
}catch(ee){
try{
xmlhttp = new ActiveXObject(“Msxml2.XMLHTTP”);
}catch(e){
try{
xmlhttp = new XMLHttpRequest();
}catch(E){
xmlhttp = false;
}
}
}
xmlhttp.open(“GET”,url);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4){
retorno=unescape(xmlhttp.responseText.replace(/\+/g,” “));
objetoHTML.innerHTML=retorno;
}
}
xmlhttp.send(null);
};
O botão esta assim
on(release){
getURL(‘javascript:abrirPag(“produtos.php”);’);
}
[Reply]
há 2 anos atrás
Pega isso tudo e transforma nisso:
function AbrirPag(url, elemento){ $(elemento).load(url); }Mas para esse código acima funcionar o JQuery tem que estar sendo carregado no
da página.
O botão no Action Script continua o mesmo.
Abraços.
[Reply]
Alexander Reply:
novembro 17th, 2009 at 9:43
Amigão obrigado pela atenção mas não estou conseguindo, sou iniciante, to na fase de pegar o código já escrito e ir adaptando. Poderia me explicar melhor como ficaria a função e onde o jquery deve estar carregado ? Obrigado
[Reply]
Alexandre Santos Reply:
novembro 17th, 2009 at 10:01
Essa função de uma única linha meu amigo, faz exatamente o que vc queria fazer com o antigo codigo:
function AbrirPag(url, elemento){
$(elemento).load(url);
}
// parâmetro URL -> a página a ser carregada
// parâmetro ELEMENTO -> elemento onde o conteúdo vai ser carregado dentro, por exemplo a DIV com ID=’conteudo’
A diferença é que ela é uma função do JQuery que faz tudo aquilo de maneira mais eficiente. so isso.. como explicado nesse post. Ele carrega um determinado conteúdo para dentro de um elemento.
Antes de executa essa função você deve incluir a biblioteca do jquery, so isso….
O botão em flash continua o mesmo..
[Reply]
Alexander Reply:
novembro 17th, 2009 at 10:24
Funcionou somente para as páginas que não tem nenhum link externo ou imagens com links externos. Assim abro o link da galeria de fotos a página toda é direcionada para um link externo e fica carregando sem parar. A galeria de fotos que estou usando é a Galleryffic
há 2 anos atrás
Como assim?
Os documentos abertos dentro da DIV não estou no mesmo servidor (ou domínio)?
Você já viu como fica o codigo HTML depois de carregado o conteúdo pelo .load()?
Pelo que você esta mostrando está parecendo que seria melhor utilizar o elemento IFRAME do que uma DIV carregando conteúdos com Ajax sem recarregar a página.
Dica: Utilize o Firebug para fazer a monitoração do codigo HTML.
[Reply]
Alexander Reply:
novembro 17th, 2009 at 14:56
MInha ultima tentativa, caso contrário vou para o querystring do php. O caso é o seguinte. As imagens que estão na galeria de fotos Galleryffic são imagens externas, puchadas de um site qualquer até ai tudo bem pois já troquei por imagens dentro do próprio servidor e náo deu certo. Me parece que o meu problema é somente quanto ao carregamente dos scripts da galeria quando a mesma é aberta dentro da div localizada no index. Observei que o script de configuração da galeria fica no final da página produtos antes do fechamento do Body. Também tentei puchar o JS da galeria tanto no index quanto na página produtos. Outra coisa quando clico no botão a página galeria abre só que não funciona e além de tudo ainda altera o css da página index. Desculpas pela minha ignorancia seu leigo neste assunto.
[Reply]
Alexandre Santos Reply:
novembro 17th, 2009 at 15:21
http://forum.imasters.uol.com.br/index.php?/topic/344090-resolvido%26nbsp%3Bmetodo-load-jquery/
Da uma lida nese problema… vê se é semelhante ao seu.
IFRAME é uma boa.. so que é muito limitado…
se consegui avise agente o que fez para corrigir o problema.
Abraços…
[Reply]
Alexander Reply:
novembro 19th, 2009 at 11:02
Infelizmente não é este o caso. Continuo procurando. Qualquer solução eu posto aqui.
há 2 anos atrás
Ola Amigos, sei que talvez aqui não seja o local apropriado para a minha duvida, mas as vezes pode ajudar outros usuarios:
Tenho o seguinte problema: rotina em jquery que atraves do select seleciona o cliente e mostra nos inputs abaixo, a pagina sozinha funciona perfeitamente no firefox, mas quando coloco ela em meu sistema, fica só “Carregando…” e não sai disto, ja fiz de tudo , mudei varias partes dos códigos , mas não consegui funcionar., se caso puderem, me ajudem, to meio desesperado por não conseguir.
jQuery(function($) {
$(“select[name='nome']“).change(function(){
$(“input[name='endereco']“).val(‘Carregando…’);
$(“input[name='Bairro']“).val(‘Carregando…’);
$(“input[name='cidade']“).val(‘Carregando…’);
$(“input[name='UF']“).val(‘Carregando…’);
$.getJSON(
‘function.php’,
{Id: $(this).val()},
function(data){
$.each(data, function(i, obj){
$(“input[name='endereco']“).val(obj.endereco);
$(“input[name='Bairro']“).val(obj.Bairro);
$(“input[name='cidade']“).val(obj.cidade);
$(“input[name='UF']“).val(obj.UF);
})
});
});
});
Nome Cliente:
— Selecione o Cliente –
Endereco:
Bairro:
Cidade:
Estado:
FUNÇÃO EM PHP
0 )
{
while( $dados = mysql_fetch_assoc( $query ) )
{
$tipo = substr($dados['nome'],0,25);
$opt .= ”.$tipo.”;
}
}
else
$opt = ‘Nenhum cliente cadastrado’;
return $opt;
}
/**
* função que devolve em formato JSON os dados do cliente
*/
function retorna( $Id=null )
{
$Id = (int)$Id;
$sql = “SELECT * FROM `cadastro` “;
if( $Id != null )
$sql .= “WHERE `Id` = {$Id} “;
$query = mysql_query( $sql );
//$json = ‘var dados = ‘;
$json .= ‘ [';
if( mysql_num_rows( $query ) > 0 )
{
while( $dados = mysql_fetch_assoc( $query ) )
{
$json .= "{endereco: '{$dados['endereco']}’, Bairro: ‘{$dados['Bairro']}’, cidade:’{$dados['cidade']}’, UF: ‘{$dados['UF']}’}”;;
}
}
else
$json = ‘Dados: não encontrado’;
$json .= ‘]’;
//$jston .= ‘;’;
return $json;
}
/* só se for enviado o parâmetro, que devolve o combo */
if( isset($_GET['Id']) )
{
echo retorna( $_GET['Id'] );
}
?>
No aguardo….
[Reply]
há 2 anos atrás
Quero agradecer ao Alexandre por imediatamente tentar me ajudar, mas já consegui sanar o erro, alias, um erro muito simples, na rotina JSON onde chamava a pagina PHP, ela estava procurando em outra pasta, sem muita lógica, pois esta tudo na mesma pasta, como default ele foi procurar na raiz do site, já consertei, outro problema interessante que resolvi tambem, são aqueles caracteres estranhos que aparecem na consulta no banco de dados Mysql, resolvi colocando uma simples instrução.
rotina de chamada de banco de dados:
$conexao = mysql_connect(“localhost”, “root”, “”);
mysql_select_db(“clientes”, $conexao);
basta adicionar esta linha:
mysql_set_charset(“utf8″, $conexao);
Problemas resolvidos, Obrigado a todos.
[Reply]
Alexandre Santos Reply:
novembro 27th, 2009 at 14:44
Legal Wander.
a função mysql_set_chartset() realmente é um adianta danado, mas aconselho a vocês a quando forem criar um objetos no mysql já criarem em UTF-8, muitos servers ainda deixam por padrão o padrão europeu (eu acho que já fiz um post sobre isso, ou ia fazer e não fiz).
Procure sempre escapar os dados de entrada do usuário, use o mysql_real_escape() http://www.php.net/manual/en/function.mysql-real-escape-string.php
É sempre um bom hábito.
Outro detalhe, que aconselho muito. Em muitos projetos eu ainda codifico tudo do 0, sem utilizar algum framework, mas você pode utilizar práticas de programação OO para reaproveitar componentes como por exemplo criar um classe para tratar só´da conexão com o banco de dados, executar querys, fazer escape e etc.
Assim se você precisar trocar o driver de conexão não vai ter uma dor de cabeça.
Vou ver se posto aqui a classe que eu sempre uso para conexão com o banco de dados.
Abraços a todos.
[Reply]