Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá galera, seguinte, to desenvolvendo um painel de controle aqui de um sistema, estou usando AJAX para abrir as paginas em uma div sem dar refresh, nessa div mostra os resultados de uma pesquisa no DB, o resultado mostra id, nome e coloquei um botaozinho pra deletar, so q agora não consigo deletar sem dar refresh, alguem poderia me dizer algum tuto ou como fazer isso? antes de mais nada, procurei bastante no google, so que nao consegui encontrar... segue abaixo alguns codigos:
index.php
//link para abrir a pagina list_filmes.php na div "conteudo_paginas"
<td align="right"><img src="images/icn_lista_clientes.png" /> </td>
<td><a href="#" onClick="java script: abre('list_filmes.php');">Listar Clientes</a></td>
//div que apresenta o conteudo das demais paginas do sistema
<div id="conteudo_paginas">
</div><p><table width="80%" border="0" cellpadding="0" cellspacing="0" align="center" id="table_listar_filmes">
<tr>
<td width="11px"><?php echo $reg_filmes['id']; ?></td>
<td width="80%"><b><?php echo $reg_filmes['nome']; ?></b></td>
<td width="3%"><a href="ver.php?acao=ver">
<img src="images/page_add.png" alt="Ver" title="Ver" border="0" /></a>
</td>
<td width="3%"><a href="editar_filme.php?acao=editar">
<img src="images/page_edit.png" alt="Editar" title="Editar" border="0" /></a>
</td>
<td width="3%"><a href="controle/acao.php?acao=delRegistro">
<img src="images/delete.png" alt="Excluir" title="Excluir" border="0" /></a>
</td>
</tr>
</table></p>
se alguem puder me ajudar, fico muito agradecido.. vlw a todos...hgb7, vlw pela dica, mais nesse tuto ensina a carregar os select sem refresh. mais mesmo assim vlw, vou dar uma analisada e ver se tem como implantar, mais se alguem tiver uma outra dica e puder postar.... vlwww gente...
Você quer saber como fazer uma requisição com o XMLHTTPRequest, passando um identificador de algum registro pela url ?
Isso mesmo Marcio, dai eu passaria o paramento ?acao=delRegistro para a pagina acao.php, no qual faria a exclusão do registro sem dar refresh. Vlw Marcio....
Isso aí é Javascript, não PHP...
Procure refinar suas dúvidas e postar no lugar correto, assim além de ser entendido mais facilmente, vai obter ajuda mais rápido e mais adequada.
Não sei como está a função abre(), imagino que seja ela quem faz a requisição, mas tenta assim:
abre('list_filmes.php?id=' + valor + '&outracoisa=' + outrovalor);
Movido: PHP=>JavascriptMarcio vlw pela ajuda heim, olha so como esta agora
//esse é o botao Excluir
<td width="3%"><a href="#" onClick="abre('list_filmes.php?acao=delRegistro');">
<img src="images/delete.png" alt="Excluir" title="Excluir" border="0" /></a>
//codigo php
if(isset($_GET['acao'])) { echo "<script>alert('Existe o get');</script>"; }Não não, isso não vai dar certo.
A página já está carregada, e não será carregada novamente.
Você tem que fazer isso com javascript.
Pra funcionar assim, a página em que você está teria que sofrer um reload, com os parâmetros na URL. Está muito confuso do jeito que você está tentando fazer, acho que você deve repensar.
Só pra elucidar, você deve dar o alert usando javascript, após receber a resposta da requisição.
Qualquer coisa posta ai.
então Marcio, você nao teria algum exemplo ai? tpw, eu nao entendo nada de Java e nem de Ajax, é pq eu comecei a fazer esse sistema em Ajax e agora to sofrendo pra termina... Eu consegui fazer o delete sabe, fazendo assim no botao excluir:
list.filmes.php
<td width="3%"><a href="controle/acao.php?acao=delRegistro">
<img src="images/delete.png" alt="Excluir" title="Excluir" border="0" /></a>
</td>
dessa maneira ai em cima ele foi pra pagina acao.php e deletou certinho, e na pagina acao.php fiz assim:
acao.php
if($_GET['acao'] == "delRegistro") {
echo '<script>alert("Filme excluido");</script>';
echo '<script>document.back(-1);</script>';
}
ATT: esse primeiro echo é só um exemplo q eu fiz pra ver se tava passando o parametro "delRegistro" para a pagina acao.php, ai o problema é o seguinte, ele volta para a pagina principal "index.php" e não para a pagina q eu estava em que a pagina "list_filmes.php" estava aberta na div, por isso q eu to apanhando, conseguiu entender? obrigado Márcio, vlw mesmo...Deixa eu ver o código da função abre()
java.js
function abre(arquivo){
var xmlHttp;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e) {
// Internet Explorer
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
alert("Seu navegador não suporta AJAX. Atualize-o em www.getfirefox.com");
return false;
}
}
}
xmlHttp.onreadystatechange=function() {
if(xmlHttp.readyState == 1) {
document.getElementById("conteudo_paginas").innerHTML = "Carregando...";
}
if(xmlHttp.readyState == 4) {
document.getElementById("conteudo_paginas").innerHTML = xmlHttp.responseText;
}
}
xmlHttp.open("GET",arquivo,true);
xmlHttp.send(null);
}
Márcio, acima esta o codigo da função "abre". vlww...Está esquisito isso, porque a função não dá pra ser reutilizada, já que não retorna um valor para que o programa decida o que fazer.
Vou te sugerir uma coisa bem POG, que pode afetar outras áreas onde (talvez) esta função seja reutilizada. Talvez você devesse copiala com outro nome, apenas pra adicionar uma linha... bom, mas vamos lá:
Modificando :
if(xmlHttp.readyState == 4) {
document.getElementById("conteudo_paginas").innerHTML = xmlHttp.responseText;
}para:
if(xmlHttp.readyState == 4) {
document.getElementById("conteudo_paginas").innerHTML = xmlHttp.responseText;
alert(''); // ====> aqui você coloca o alert
}Veja se é isso o que você quer.certo Márcio, copiei com outro nome pra ver, mais tpw, e pra passar o parametro pela url so fazer normal? pois vou passar por exemplo o paramento <a href="#" onClick="abrir('controle/acao.php?acao=deletar&id=50');">Excluir</a>
no caso de 50, seria o numero do id do filme, no caso eu colocaria a funcao em php indicando o numero do filme, depois
a pagina irá receber esse parametro $_GET['acao'], e identificar ele, se for igual a "deletar" irá ter a rotina do mysql para deletar o registro, e depois de deletar o registro eu faço um 'echo '<script>alert("Registro Excluido");';
Resumo: minha duvida é como passar o parametro ?acao=deletar pela url usando JS e Ajax, pois gostaria de deletar o registro sem dar refresh na pagina em que estou.
Certo, neste caso você estaria "mandando" por GET para o arquivo controle/acao.php as variáveis acao=deletar e id=50.
É claro que após o evento você tem que esconder o link que faz a requisição, porque o registro não existirá mais.
Usa o console do plugin FireBug no Firefox pra ver a "conversa" do Javascript. Ele te mostra as requisições e a resposta à requisição.
certo, mais acontece q ainda não consegui passar o parametro para q ele seja executado sem refresh, o q eu disse acima é minha intenção do que gostaria de fazer, mais ainda praticamente tenho nada em relação a isso, pode me ajudar a passar o parametro "acao" e "id" pela url usando Ajax? vlw e desculpe se talvez estou explicando minha duvida de modo errado, mais é q to ficando loko nessa parte de Ajax nem sei pq fui inventar isso, hehehe.... vlw Márcio..
Márcio, axo q consegui, fzd desse modo:
<td width="3%"><a href="java script:abre('acao.php?acao=ver&id=<?php echo $reg_filmes['id']; ?>');">
<img src="images/page_edit.png" alt="Editar" title="Editar" border="0" /></a>
</td>
abriu normal e passou o parametro "acao" e "id" para a pagina acao.php normal.Parabéns http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Márcio, pra finaliza mesmo este topico, poderia me responder uma coisa, tpw,
nesse codigo abaixo, estou pedindo pra abrir a pagina "acoes.php" com o parametro "deletar", na pagina "acoes.php" se eu fizer o seguinte comando: $acao = $_GET['acao']; echo $acao; <- fzd isto, ele vai imprimir na tela o valor da acao que vai ser "deletar", agora se eu fizer assim:
$acao = $_GET['acao']; echo '<script>alert("O nome da acao é mesmo deletar");</script>'; <- não vai ter resultado nenhum, ou seja, pq nao ta executando o alert? vlw brigado por tudo heim Márcio, principalmente pela paciência.
<td width="3%"><a href="java script:abre('acoes.php?acao=deletar');">
<img src="images/delete.png" alt="Excluir" title="Excluir" border="0" /></a>
</td>corrigindo:
acoes.php
if ($_GET['acao'] == "deletar")
{
print '<script>alert("A acao e mesmo DELETAR");</script>';
}Donny, isso agora é PHP.
Você precisa entender a questão do Javascript pra fazer o que quer, como o objeto XMLHTTPRequest funciona, seus métodos e propriedades, etc.
Só pra você entender, esse processo aí ocorre no browser, com a página carregada. O PHP é executado no servidor, um momento antes da página ser enviada para o browser. Depois que a página está no browser, não existe mais PHP, não adianta você dizer que "se a variável tal for igual a tal faça isso". Aí, é só javascript.
eu já consegui o q eu precisava fazer, mais eu sempre uso dessa forma:
echo '<script>alert("mensagem aqui");</script>';
assim sempre da certo, so q como to usando essa parte de AJAX, nao consigo entender pq nao ta dando a mensagem usando o "alert".Vou dizer mais uma vez: a página já foi carregada, o PHP já era, pois a página já está no cliente. Agora é o Javascript quem tem que decidir o que fazer. Entendeu ?
O PHP processa a informação no servidor e manda pro cliente o HTML. Olhe o código fonte dos seus arquivos no browser, não tem PHP lá.
http://imasters.com.br/artigo/3918/jav...os_sem_refresh/
Espero que ajude... ;)