Jump to content
MatheusAssuncao

Carregamento Ajax - Cidades por estado no Wordpress

Recommended Posts

Boa tarde pessoal!

 

Eu criei um formulário HTML no wordpress para salvar no banco os dados do contato. Tenho um SELECT estado:

<select id='estado' name='estado'>
   <option value='UF'>Nome do estado</option>
</select>

E um select cidade. Ao selecionar um estado eu preciso que carregue o select de cidades via ajax. As cidades estão em uma tabela do banco de dados do wordpress.

Meu script PHP que recebe a requisição ajax e consulta no banco é esse:

<?php
include "conexao.php";

$estado = mysql_real_escape_string( $_GET['estado'] );
$cidades = [];

$resultado = mysql_query("SELECT Codigo, Nome FROM Municipio WHERE Uf='$estado' ORDER BY Nome", $conexao);

while ( $row = mysql_fetch_array( $resultado ) ) 
	array_push($cidades, ['Codigo' => $row['Codigo'], 'Nome' => utf8_encode($row['Nome'])]);

echo(json_encode( $cidades ));

O script JS que faz a requisição é esse:

$('#estado').change(function () {
                if ($('#estado').val()) {
                    $.getJSON('cidades.ajax.php?search=', {
                        estado: $('#estado').val(),
                        ajax: 'true'
                    }, function (j) {
                        var options;
                        for (var i = 0; i < j.length; i++) {
                            options += '<option value="' + j[i].Codigo + '">' + j[i].Nome + '</option>';
                        }
                        $('#cidade').html(options).show();
                    });
                }
            });

Isso funciona no meu servidor próprio, mas não consigo fazer funcionar no wordpress. Implementei o script JS através de um plug-in pra inserir JS nas páginas, mas o Wordpress não permite executar um arquivo PHP não registrado por ele (ou algo assim).

 

Poderiam me ajudar? Como faço pra fazer com que meu script AJAX requisite a consulta no banco do wordpress onde estão as cidades?

 

Espero ter sido claro.

Share this post


Link to post
Share on other sites

Eu consegui fazer adicionando as funções do arquivo functions.php dentro da pasta do meu tema. Pra quem precisa executar o ajax dentro do wordpress, pesquise sobre como fazer através do arquivo functions.php

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By fideles
      Mais uma vez venho aqui pedir ajuda a vocês.
       
      Tenho um formulario que criei aqui na empresa algo bem simples, somente para sair das planilhas de excel, que seria cadastro de funcionarios.
       
      Tem os campos, matricula, nome completo, unidade de trabalho, endereço e telefone de emergencia.
       
      A parte do formulario funciona, a gravação no BD tbm, listar as informações também, ai me perguntaram se era possível um auto preenchimento dos campos colocando somente a matricula do funcionario e respondi que eu não sei porque realmente não sei.
       
      A ajuda que eu preciso de vocês seria, é possível fazer isso ? Colocar a matricula e vir do banco e preencher os outros inputs? Se sim, é possível me derem um exemplo de como funciona e eu estudar o codigo e colocar nos outros inputs.
       
      Obrigado antecipadamente. 
       
    • By lezão
      Boa tarde, meus amigos!
      Td bem com vcs?
       
      Tenho um Select em ASP que tbm trabalho que roda normal.
      "SELECT * FROM Banners order by RND(INT(NOW*id_banners)-NOW*id_banners)"  
      E gostaria que roda se em PHP tbm mas infelizmente não estou conseguindo realizar esse acontecimento.
      "SELECT * FROM Produtos where Banners = 'Sim' order by RND(INT(NOW*Banners)-NOW*Banners)"  
      Desde ja muito obrigado!
       
    • By fideles
      Fala pessoal, tudo tranquilo?
       
      Venho recorrer a vós pois já não consigo mais.... 
       
      Tenho um campo select com algumas opções de nome.
      <select class="seleciona_nome"> <option value="Joao">Joao</option> <option value="Julio">Julio</option> <option value="Pedro">Pedro</option> </select>  
      E um campo input do tipo "text"
      <input type="text" class="opcaoSelect" autocomplete="off" disabled="disabled">  
      Preciso que ao selecionar uma opção do "Select" seja auto preenchido no input. Tenho um codigo que funcionava e não sei mais porque não funciona, veja abaixo;
       
      <script> $(document).ready(function(){ $('.seleciona_nome').on('change', addOption); }); function addOption(){ $('.opcaoSelect').val(this.value); } </script>  
      Peço ajuda ai caso alguém consiga me ajudar a entender porque este não funciona mais.
       
      Obrigado.
       
    • By feasso
      Como dou update em um usuário pesquisando ele pelo e-mail ou nome de usuário ? Quero atualizar o First Name
    • By Authent
      Gente tenho um laço de repetição onde exibi uma lista , nele contem um botão para atualizar o nível desses itens, porem queria que a pagina não desse refresh e ao mesmo tempo enviasse uma msg para o "TD" daquele item atualizado, e utilizei o Ajax que envia no metodo post o id, porem ele está enviando só o ultimo id da lista alguem poderia me ajudar. Abaixo explicarei melhor
       
      while($row = $select->fetch(PDO::FETCH_ASSOC)): ?> <tbody> <tr> <td><?php echo $row['nome'];?></td> <td><?php echo $row['data'];?></td> <td class="contador<?php echo $row['id']; ?>"> <ul class="actions"> <li><a href="" id="<?php echo $row['id'];?>" class="ative btnUpdate"><i class="fas fa-check"></i> Atualizar</a></li> </ul> </td> </tr> </tbody> <form class="ajax_form"> <input type="hidden" class="id" name="id" value="<?=$row['id']?>" /> </form> <?php endwhile; ?> Nesse laço de repetição eu adicionei um td com uma class ID, para que a msg enviada fosse só para aquele td, até ai esta funcionando normal
      e o link que contem o ID = id, e um formulario dentro do while, e o valor do input é o valor do id
       
      <script> $(document).ready(function(){ $("body").delegate('.btnUpdate', 'click', function(e){ e.preventDefault() //Para anular o comportamento padrão do link var dados = $(".ajax_form").serializeArray(); var id = $(this).attr("id"); var contador = id; $.ajax({ url: "action/test.php", type: "POST", data: dados, success: function (resultado) { console.log(resultado); $('.contador'+contador+'').html(resultado); }, error: function (jqXHR, textStatus, errorThrown) { alert(jqXHR) console.log(jqXHR); } }); }) }); </script> e no script do Ajax ele recupera os dados, e enviar uma msg de sucesso para a class .contador+id(nessa parte está funcionando perfeitamente), porem como mencionado o id que está sendo enviado para o arquivo test.php é sempre o ultimo id do meu while alguem poderia me ajudar. se houver outro método estou aceitando também
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.