AJAX - historial php

 
Vista:

historial php

Publicado por ajax-wordpress (1 intervención) el 02/02/2021 16:33:27
Hola, estoy teniendo un problema con el paso de datos con ajax en wordpress.
Os explico la idea : En LocalStorage se recogen x datos estos datos queremos guardarlos en un archivo .json que se genera en el registro de cada usuario, para ello utilizo ajax para pasar los datos a php.
Tengo la funcionalidad que reconoce el registro de usuario y la creación del archivo .json si este no lo tiene ya creado , cada archivo .json posee la id del usuario para evitar errores.
Por otro lado he pasado los datos del LS a ajax con url apuntando a admin-ajax.php y me los muestra por PHP mediante un action activa la función creada en el fichero functions.php.
Tengo un problema y es que al escribir en el archivo .json la variable que recoge la funcion php en el archivo functions.php, al abrir el .json del usuario registrado la variable me la da null o false ... por lo que no reconoce la variable.
He probado metiendo en la funcion que recibe las variables del ajax la parte de codigo que genera el .json del usuario y al hacer el registro del usuario este no genera el archivo.....

adjunto codigo :
Ajax.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
jQuery(document).ready( function(){
	$('#my-button').on('click', function(){
 
 
      var nombre = localStorage.getItem('Nombre');
      var tipo = localStorage.getItem('Tipo');
 
      var dt = new Date();
 
year  = dt.getFullYear();
month = (dt.getMonth() + 1).toString().padStart(2, "0");
day   = dt.getDate().toString().padStart(2, "0");
 
     //La llamada AJAX
      $.ajax({
          type : "POST",
          url:"/wp-admin/admin-ajax.php",
          dataType: 'json',
          data : {
              action: "notify_button_click",
              message : "Button has been clicked!",
              nombre: nombre,
              tipo: tipo,
              day: day,
              month: month,
              year: year
          },
          error: function(data){
              console.log(data);
          },
          success: function(data) {
              // Actualiza el mensaje con la respuesta
              $('#txtMessage').text(data.message);
              $('#txtName').text(nombre);
              $('#txtType').text(tipo);
 
 
            //   $('#nombre').text(nombre);
            //   $('#tipo').text(tipo);
            //   $('#date').text(day + "-"+ month+"-"+year);
 
 
 
            //   console.log('DATOS AJAX PASADOS', nombre , tipo, date);
          }
      })
 
  });
});

functions.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function notify_button_click(){
 
 
      // Check parameters
    $message  = isset( $_POST['message'] ) ? $_POST['message'] : false;
 
  $nombre = $_POST['nombre'];
 
  $tipo = $_POST['tipo'] ;
 
 
    if( !$nombre ) wp_send_json( array(
 
        'message' => __('Message not received :(', 'wpduf'),
        'nombre' => __('Nombre no recibido :(', 'wpduf'),
        'tipo' => __('Tipo no recibido :(', 'wpduf'),
 
        ) );
 
    else wp_send_json( array(
        'message' => __('Message received, greetings from server!', 'wpduf'),
        'nombre' => __('Nombre recibido saludos desde el servidor!', 'wpduf'),
        'tipo' => __('Tipo recibido saludos desde el servidor!', 'wpduf'),
 
        ) );
 
 
 
}


Esta es la pagina con el boton al que hace referencia la funcion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
 
<script src="ajax.js"></script>
<style>
 
 
</style>
 
 
<!--// Nuestro bot贸n-->
<button id='my-button'>Click me</button>
 
<!--// Un p谩rrafo donde mostrar el mensaje de respuesta-->
 <p id="txtMessage">Nothing yet</p>
 <p id="txtName">Nothing yet</p>
 
 <p id="txtType">Nothing yet</p>
  <fieldset>
    <legend> Nombre desde LS :</legend>
    <div id="nombre"></div>
 
    </fieldset>
    <fieldset>
    <legend> Tipo documento desde LS :</legend>
   <div id="tipo"></div>
 
    </fieldset>
     <fieldset>
    <legend> Fecha recogida :</legend>
 <div container>
    <div class="row">
   <div class="col" id="date"></div>
 
 
   </div>
 
   </div>
 
    </fieldset>
esta página es de comprobación ... para saber si los datos se envian o no.
hasta aquí bien , reconoce las variables y nos muestra los datos almacenados en el LS pasados por ajax.

Esta es la programación que he hecho para identificar al usuario nuevo y que genere un archivo .json en User_FileData si no está creado ya

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
um_fetch_user( get_current_user_id() );
 $display_userId = get_current_user_id();
 $display_name = um_user('display_name');
 $files = glob("user_FileData/*.json");
 $user_fileName = "".$display_userId.".json";
      class Dato {
  public $nombre  = '' ;
  public  $tipo  = '' ;
  public $fecha = '';
     }
     $dato = new Dato;
     $dato -> nombre ;
     $dato -> tipo ;
     $dato -> fecha = new DateTime();
    $a=array();
    if ($display_name != null){
		foreach($files as $file) {
    		array_push($a, $file);
     	}
    	if (!in_array($user_fileName ,$a)){
   		$fp = fopen('user_FileData/'.$user_fileName, 'a');
    	    fwrite($fp, json_encode($dato) );
    		fclose($fp);
    	}
    }

Con este codigo y con la classe creada como Dato y el fwrite intento que se imprima el dato de la variable en el .json sin embargo obtengo un nombre : 'false' y un tipo : 'false' ....


La idea es crear un historial de usuario , recoger el nombre del archivo y el tipo de archivo, estos datos se guardan en el LS y actualmente se muestra el último archivo convertido , ya que al crear otro nuevo se sobreescribe. La idea es generar el .json para que se guarden por fecha y pueda mostrarse en su panel de usuario.

si sabeis cual podría ser la solucion os estaría muy agradecida , gracias !!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder