Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Micilini Roll

[Resolvido] Executar Funçao no php sem deixar rastros

Recommended Posts

pessoal eu sei que o que eu quero fazer envolve um pouco de javascript,entao vamos lá:

 

1- tentei algumas formas de se chegar a isso a primeira delas foi tentar executar com javascript:

 

<script ty="text/javascript">
function submitForm(acao){
 if(acao == 'salvar'){
   document.forms.name_do_form.action="http://www.endereco.com.br/salvar.php";
   document.forms.name_do_form.submit();
 }else if(acao == 'deletar'){
   document.forms.name_do_form.action="http://www.endereco.com.br/deletar.php";
   document.forms.name_do_form.submit();
 }
}
</script>

<form action="javascript:void(0);" name="name_do_form" method="post">
 <input type="buttom" onclick="submitForm('salvar');" value="Salvar"/>
 <input type="buttom" onclick="submitForm('deletar');" value="deletar"/>
</form>

 

OBS: este metodo nao quero fazer pois o meu intuito é que seja executada a funçao e que o projeto permaneça na mesma pagina,pq?,imagina um internet lenta o cara vai la e clicando em um dos botoes ele vai ser redirecionado para o projeto salvar.php(aonde sera feita um insert) e depois e redirecionado de volta com o history go-1... :ermm:/>/>/>

 

2- tentei executar uma funçao no mesmo projeto na qual nao sairia da pagina aonde eu estou

 

<script ty="text/javascript">
function submitForm(acao){
 if(acao == 'salvar'){
   document.forms.name_do_form.action="http://www.endereco.com.br?p=sand";
   document.forms.name_do_form.submit();
 }else if(acao == 'deletar'){
   document.forms.name_do_form.action="http://www.endereco.com.br?p=sand";
   document.forms.name_do_form.submit();
 }
}
</script>

<form action="javascript:void(0);" name="name_do_form" method="post">
 <input type="buttom" onclick="submitForm('salvar');" value="Salvar"/>
 <input type="buttom" onclick="submitForm('deletar');" value="deletar"/>
</form>

<?
if($_get['p'] == "sand"){
echo  $ola;
}
?>

 

OBS: este metodo foi como eu falei a voces no inicio da topico,eu nao quero ele,pois ele deixa rastros na url do navegador(como www.meusite.com.br/index.php?p=salvar "?P=SALVAR") e pra min isso fica meio ruim pois nao deixa o site com um tom profissional entende... :ermm:/>/>/>

 

 

3-dai eu tive uma ideia melhor,redirecionei para a mesma pagina so que sem funçao nenhuma fazendo o formulario seja enviado novamente para a mesma pagina e assim mostrando o valor do $_post,como fiz isso? ai esta

 

<script ty="text/javascript">
function submitForm(acao){
 if(acao == 'salvar'){
   document.forms.name_do_form.action="http://www.endereco.com.br";
   document.forms.name_do_form.submit();
 }else if(acao == 'deletar'){
   document.forms.name_do_form.action="http://www.endereco.com.br";
   document.forms.name_do_form.submit();
 }
}
</script>

<form action="javascript:void(0);" name="name_do_form" method="post">
 <input type="buttom" name="s" id="s" onclick="submitForm('salvar');" value="Salvar"/>
 <input type="buttom" name="s" id="s" onclick="submitForm('deletar');" value="deletar"/>
</form>

<?
       $choise = $_POST['s'];

echo $choise;
?>

 

OBS: este metodo funciona perfeitamente,mas eu nao sei se este metodo é o mais adequado a se fazer,no caso eu teria que colocar uma function ali englobando a variavel e o echo,mais como eu posso executar um a function ali no onclick e no javascript,MAS que nao deixe rastros na url?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use ajax para enviar os dados do form para um outro arquivo php onde tu vai receber o post e tratar os dados

 

material recomendado para a leitura:

http://www.w3schools.com/ajax/default.asp

 

através do ajax tu envia o form sem precisar recarregar toda a página, apenas uma "div" irá receber esse "refresh", da uma estudada sobre isso que eu acho que vai solucionar teu problema!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dei uma olhada aqui agora no site que voce me mandou e vi aqui os comandos do cara:

 

<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
 {// code for IE7+, Firefox, Chrome, Opera, Safari
 xmlhttp=new XMLHttpRequest();
 }
else
 {// code for IE6, IE5
 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
xmlhttp.onreadystatechange=function()
 {
 if (xmlhttp.readyState==4 && xmlhttp.status==200)
   {
   document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
   }
 }
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
}
</script>
</head>
<body>

<div id="myDiv"><h2>Let AJAX change this text</h2></div>
<button type="button" onclick="loadXMLDoc()">Change Content</button>

</body>
</html>

 

assim que clicamos no botao ele apareçe um texto,este texto esta sendo pego na linha:

 

xmlhttp.open("GET","ajax_info.txt",true);

 

eu ate adicionei um texto field e vi que ele nao esta recarregando a pagina pois tudo que eu escrevi no textfield assim que eu clico no botao ele ainda continua la.... :grin:

entao tudo que tenho que fazer é trocar este ajax_info.txt por uma function,pode me dar um exemplo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

<script ty="text/javascript">
function loadXMLDoc(acao)
{
var xmlhttp;
var parametros = "&acao=" + acao + "&teuInput=" + document.getElementById("teuInput").value
if (window.XMLHttpRequest)
 {// code for IE7+, Firefox, Chrome, Opera, Safari
 xmlhttp=new XMLHttpRequest();
 }
else
 {// code for IE6, IE5
 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
xmlhttp.onreadystatechange=function()
 {
 if (xmlhttp.readyState==4 && xmlhttp.status==200)
   {
   document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
   }
 }
xmlhttp.open("POST","teu_arquivo.´php",true);
xmlhttp.send(parametros);
}

</script>

<form name="name_do_form" method="post">
 <input type="text" name="teuInput" id="teuInput" />
 <input type="buttom" name="s" id="s" onclick="loadXMLDoc('salvar');" value="Salvar"/>
 <input type="buttom" name="s" id="s" onclick="loadXMLDoc('deletar');" value="deletar"/>
</form>
<div id="myDiv">
</div>

 

no "teu_arquivo.php" tu trata e o que tu der "echo" ou "print" na tela, irá aparecer na div "myDiv"

Compartilhar este post


Link para o post
Compartilhar em outros sites

ata,nao sei se eu entendi corretamente pois neste comando eu ainda permaneço no projeto e automaticamente na linha

 

xmlhttp.open("POST","teu_arquivo.´php",true);

 

eu estarei puxando o projeto teu_arquivo.php como se fosse uma especie de include?

 

e me responde mais uma pergunta se eu colocar desta forma:

 

xmlhttp.open("POST","teu_arquivo.php?funçao=enviar",true);

 

se eu definir uma funçao ali isso podera influenciar na url do meu navegador mesmo isso sendo um include?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu to na correria aqui hoje, por isso desculpa a falta de didática e a demora para te responder!

 

 

Seguinte, o ajax ele mira no arquivo php em que você irá tratar os dados recebidos, por ex:

 

no teu arquivo Html(que você pode chamá-lo como quiser) você terá assim:

 

<script ty="text/javascript">
function loadXMLDoc(acao)
{
var xmlhttp;
var parametros = "&acao=" + acao + "&teuInput=" + document.getElementById("teuInput").value
if (window.XMLHttpRequest)
 {// code for IE7+, Firefox, Chrome, Opera, Safari
 xmlhttp=new XMLHttpRequest();
 }
else
 {// code for IE6, IE5
 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
xmlhttp.onreadystatechange=function()
 {
 if (xmlhttp.readyState==4 && xmlhttp.status==200)
   {
   document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
   }
 }
xmlhttp.open("POST","teu_arquivo.php",true);
xmlhttp.send(parametros);
}

</script>

<form name="name_do_form" method="post">
 <input type="text" name="teuInput" id="teuInput" />
 <input type="buttom" name="s" id="s" onclick="loadXMLDoc('salvar');" value="Salvar"/>
 <input type="buttom" name="s" id="s" onclick="loadXMLDoc('deletar');" value="deletar"/>
</form>
<div id="myDiv">
</div>

 

já no teu arquivo php(este terá o nome que você colocar na função "xmlhttp.open") você coloca assim:

 

<?php

$acao = $_POST['acao'];
$valorInput = $_POST['teuInput'];


echo "Sua acao foi " . $acao . " e o valor do input foi " . $valorInput;

?>


 

 

Note que isso é um código pronto que eu fiz para você, realmente, estude Ajax, entenda como funciona as funções de "post", "get" e "request" do php, não adianta copiar e colar, eu apenas estou te passando exemplos, e no site que eu te passei só terá exemplos, você tem que estudar os exemplos, entender os conceitos e então adaptar para o teu projeto.

 

.NET, java, php, javascript, html, xhtml, etc. Tudo isso, que engloba o web-design, seja front-end ou back-end, tem material, E MUITO, na internet, basta ir para o www.google.com.br e pesquisar.

 

Estude, e entenda o que acontece com o código que tu escreve, copiar e colar não te faz desenvolvedor!

Compartilhar este post


Link para o post
Compartilhar em outros sites

De nada micilini, estou aqui para ajudar, se tu ainda tiveres alguma dúvida, poste, assim que possível eu irei ver e responder!

 

Boa sorte no teu projeto!

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.