Ajax Request and JS File Registration - Wordpress

Asked

Viewed 128 times

0

Good morning,

I am mounting an ajax request to send to the source functions.php, I read in the wordpress documentation that needs to be done the registry of the js file that handles the request and other things. But when I send the request to functions.php and nothing happens can help me in what I’m missing?

Ajax request:

 var Json =  JSON.stringify(contato,null,2);
//var formData = Json;

$.ajax({
    type: 'POST',
    url:ajax_url,
   // url:ajax_carrinho, 
    //url:'../grava-dados.php', 
    //data: contato,
    //data: Json,
    //data:{ action: 'gravaDadosContato',dados: contato},
    data:{ action: 'gravaDadosContato',dados: Json},
    //data: 'action=gravaDadosContato&'+formData
    //action: 'gravaDadosContato',
    //processData: false,
    //contentType: false,
    success: function (data) {
        alert(data);
    }
}).done(function( msg ) {
        alert( "Dados enviados com sucesso");
        location.reload();
});

functions.php

// adcionando o jquery
function register_jquery() {
    wp_enqueue_script('jquery');
}

add_action('wp_enqueue_scripts', 'register_jquery');

//registrando o arquivo carrinho.js
function register_carrinho() {
    wp_register_script(
    'carrinho',
    get_stylesheet_directory_uri() . '/js/carrinho.js',
    array('jquery'),
            true
);

wp_enqueue_script('carrinho');

}

add_action('wp_enqueue_scripts', 'register_carrinho');


add_action( 'wp_ajax_gravaDadosContato', 'gravaDadosContato' );
add_action( 'wp_ajax_nopriv_gravaDadosContato', 'gravaDadosContato' );


function gravaDadosContato(){
    global $wpdb;

$dados = json_decode($json);

//var_dump($dados);

$empresa    = $dados->{'empresa'};
$responsavel   = $dados->{'responsavel'};

//$dados = json_decode('dados', true);


return $empresa;
die;
}

1 answer

0


  1. Check if the variable’s url ajax_url is correct.
  2. Your data in Json is incorrect: Uncaught ReferenceError: Json is not defined

    • the correct would be
      var x = { action: 'gravaDadosContato', dados: 'Json'};
      
       var x = { action: 'gravaDadosContato',dados: Json};
      console.log(x);
  3. Check if the request is coming to your server.

    • in php echo 'chegou';
    • analyze the network Chrome. Check if the status is even returning 200(Success). What if the return is being a json. inserir a descrição da imagem aqui inserir a descrição da imagem aqui inserir a descrição da imagem aqui
  4. Example ajax request: more information on http://api.jquery.com/jquery.ajax/

     $.ajax({
       url: "http://meuservidor.com/salvar",
       type: "post",
       data: { nome: 'joao' },
       beforeSend: function () {
          console.log('antes de fazer a requisição');
       },
       error: function (e) {
          console.log('erro ao fazer a requisição'); // quando o servidor retorna status 400, 404, 500, ...
       },
       success: function (response) {
          console.log('sucesso ao fazer a requisição'); // quando o servidor retorna status 200, 201, ....
       }
     });

  5. Once the execution manages to reach the $dados = json_decode($json);. Just you implement your regrade negócio in php. From this point your concern should be with your return return $empresa; it is in the format json?. I don’t think so, missing one return json_encode($empresa);. Also another concern should be with the return header: header('Content-Type: application/json');.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.