ZimbaWEB 0 Denunciar post Postado Agosto 25, 2010 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
Eliseu M. 2 Denunciar post Postado Agosto 25, 2010 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
Haz 3 Denunciar post Postado Agosto 25, 2010 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
wolfphw 60 Denunciar post Postado Agosto 25, 2010 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
skindedo 0 Denunciar post Postado Agosto 25, 2010 Eduardo e Jquery = inseparáveis .. =X Compartilhar este post Link para o post Compartilhar em outros sites
Fernando Vieira 0 Denunciar post Postado Junho 10, 2013 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
eduardoherden 9 Denunciar post Postado Fevereiro 5, 2014 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