Ir para conteúdo

POWERED BY:

Arquivado

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

ZimbaWEB

Executar função php dentro de uma função jquery

Recommended Posts

Estou tentando executar/chamar uma função php dentro de uma função jquery. Será isso possível?

 

Exemplo abaixo:

<script type="text/javascript">
var cnt = 0;
function novo_produto(){
	
	html = "<tr id='produto"+cnt+"'>";
	html += "<td><input name='qtd_pedido' type='text' size='6'/></td>";
	html += "<td>";
	html += "<select name='produto_pedido' id='produto_pedido' style='width:100%;'>";
	html += "<option id='0' value='0'>Selecione um Produto</option>";
	html += "<\?php";
	html += "listar_produtos_pedido()"; //AQUI ESTÁ A FUNÇÃO PHP
	html += "?>";
	html += "</select>";
	html += "</td>";
	html += "<td><input name='qtd_pedido' type='text' size='6' readonly=''/></td>";
	html += "<td><input name='qtd_pedido' type='text' size='6'/></td>";
	html += "<td><img src='../imagens/delete.png' onclick=\"$('#produto"+cnt+"').remove();\" style='cursor:pointer;' title='Remover Produto do Pedido' alt='Remover Produto do Pedido'/></td>";
	html += "</tr>";
	
	$('#adicionar_produto').before(html);
	cnt++;
}
</script>

 

Abaixo função php:

function listar_produtos_pedido(){
	$cons_produtos = mysql_query("SELECT * FROM ".TABELA_PRODUTO." ORDER BY id");
	while($res_produtos = mysql_fetch_array($cons_produtos)){
		$id_produto = $res_produtos["id"];
		$nome_produto = $res_produtos["nome"];
		$valor_produto = $res_produtos["valor"];
		echo "<option id='$id_produto' value='$valor_produto'>$nome_produto</option>";
	}
}
Isso é possível? Existe uma outra forma?

Grato pelas respostas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que é possível, porém desse modo que você está fazendo... fica rudimentar. Por que imprimir essa tabela toda, ao invés de deixar os inputs já criados e usar Ajax?

 

Com Ajax, você envia o formulário (sem refresh) e então, atualiza a tabela. Desta forma, você envia e puxa os dados do servidores, dando um dinamismo muito maior à sua página.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa sua função não vai funcionar. O PHP é executado no servidor, o Javascript no cliente, depois que a execução do PHP já foi encerrada. Portanto, você até pode manipular um documento jquery com PHP mas não pode fazer o contrário. Nesse seu exemplo, ele deve exibir a sua chamada PHP junto com o código HTML ao cliente.

 

A solução é usar ajax. O jQuery tem os métodos $.post e $.get que fazem isso de forma muito simples. Basicamente, anexe a chamada dessa função (listar_produtos_pedido()) a um link, tipo: /index.php?action=listar_produtos_pedido, utilize a função ajax do jQuery, capture o resultado e exiba onde quiser no HTML.

 

Exemplo de index.php

<?php
// A sua função
function listar_produtos_pedido(){
	$cons_produtos = mysql_query("SELECT * FROM ".TABELA_PRODUTO." ORDER BY id");
	while($res_produtos = mysql_fetch_array($cons_produtos)){
		$id_produto = $res_produtos["id"];
		$nome_produto = $res_produtos["nome"];
		$valor_produto = $res_produtos["valor"];
		echo "<option id='$id_produto' value='$valor_produto'>$nome_produto</option>";
	}
}

// O acionador
if (isset($_GET['action']) && $_GET['action'] == 'listar_produtos_pedido') {
	listar_produtos_pedido();
	exit; // Isso evita que o resto do arquivo seja executado
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aki um exemplo simples de como fazer...

 

index.php

<script type="text/javascript" src="jquery.js"></script>
<script>
$(document).ready(function(){
	$("a#nome").click(function(event) {
		event.preventDefault(); // Serve para retirar a ação do click do link
		$("td#mostrar").load("acoes.php?acao=nome");
	});
	
	$("a#sobrenome").click(function(event) {
		event.preventDefault(); // Serve para retirar a ação do click do link
		$("td#mostrar").load("acoes.php?acao=sobrenome");
	});
});
</script>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><a href="#" id="nome">Nome</a> <a href="#" id="sobrenome">Sobrenome</a></td>
  </tr>
  <tr>
    <td id="mostrar"> </td>
  </tr>
</table>

 

acoes.php

<?php
	function mostrarNome() {
		$nome = "Fulano";
		return $nome;
	}
	
	function mostrarSobrenome() {
		$sobrenome = "de Tal";
		return $sobrenome;
	}
	
	$acao = $_GET['acao'];
	
	if ($acao == "nome") {
		echo mostrarNome();
	} else {
		echo mostrarSobrenome();
	}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, estava com dúvida de como chamar uma função php pelo jquery e com o exemplo do wolfphw ficou bem claro.

 

Porém ele está passando os parâmetros para a função pela url como get "acoes.php?acao=sobrenome", tem como eu passar esses parâmetros de outro modo, sem que ele seja visível pela url?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, estava com dúvida de como chamar uma função php pelo jquery e com o exemplo do wolfphw ficou bem claro.

 

Porém ele está passando os parâmetros para a função pela url como get "acoes.php?acao=sobrenome", tem como eu passar esses parâmetros de outro modo, sem que ele seja visível pela url?

 

Obrigado

 

 

claro meu jovem

 

<img class="clicavel on" idimg="'.$dados['id'].'" arc="editais" valor="S" src="img/off.png" style="margin-top:2px;margin-bottom:2px;"/>

$('.clicavel').click(function(){
   var id = $(this).attr('imagemID');

   var tipo = $(this).attr('tipo');

   $.ajax({
       type : "POST",
       url : "local_de_sua_url",
       data : "id=" + id + "&tipo =" + tipo,
       sucess : function(html){
           $('.div').html(html);
       }
   })

});

 

 

o codigo esta bem facil de entender

 

na "img" eu adicionei uns atributos

e estou pegando eles com o jquery

 

dps envio via ajax para a url e passo o $_POST

 

o .php , recebe eles por post

 

é barbada

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.