Synchronizing PHP data with JavaScript

0

When the page loads through the URL index.php?num=58 initially the page autosalvar.php does not recognize the value of the input name="num-edit" (containing the number 58 ), however when passing the time of 2 seconds the value 58 is captured.

Note: I need to set the value (by clicking the link corresponding to the ID) and remain in the index.php , since it is the autosave.

header.php

$(function () {

  /* Captura o 1º parâmetro passado pela URL */
  var valor_num = /num=([^&]+)/.exec(window.location.href)[1];
  $("[name='num-edit']").attr('value', valor_num);

  /* Autopreencher os campos do formulário com dados do BD */
  $.post("actions/autosalvar.php", function (data) {
    $("[name='id-cliente']").attr('value', data.id_cliente);
    $("[name='cliente']").attr('value', data.cliente);
  }, "json");

  /* Passar dados do formulário a cada 2 segundos para página PHP */
  setInterval(function () {           
    var dados = $('#meu_form').serializeObject();

    $.post("actions/autosalvar.php", {'meus_dados': dados}).done(function(data) {
    });

  }, 2000);

});

index.php:

<form name="meu_form" id="meu_form" novalidate="novalidate">
  <!-- Campo oculto para pegar ID do cliente  -->
  <input type="number" hidden name="num-edit" />

  <?php
  foreach($resultado_query as $res){      
    $id = $res['id'];
  ?>
  <!-- Setar ID na URL -->
  <a href="index.php?num=<?php echo $id; ?>">
  <?php } ?>
</form>

autosalvar.php:

/* Pegar ID para realizar consulta no BD */
$num = &$_POST['meus_dados']['num-edit'];
    
asked by anonymous 21.02.2017 / 21:29

2 answers

1

From what I understand of your code every time you click on the LINK it runs a postback and reloads the page ...

Try using javascript to do this.

Create an ID for your Link and use it in JavaScript like this:

$("#link").on("click", function (event) {
event.preventDefault();
 var dados = $('#meu_form').serializeObject();

    $.post("actions/autosalvar.php", {'meus_dados': dados}).done(function(data) {
      //executado com sucesso
    });
});

This will prevent when you click the link it changes page ...

Did it work?

function atualizarDados() { 
var dados = $('#meu_form').serializeObject(); $.post("actions/autosalvar.php", {'meus_dados': dados})
.done(function(data) { //executado com sucesso }); 
}; 

setInterval(atualizarDados, 2000);
    
22.02.2017 / 00:42
1

In JS, only after the return of the first post you start checking every 2 seconds. Then you put a initializer called "loopcheck ()" inside the postback, see below:

$(function () {
  /* Captura o 1º parâmetro passado pela URL */
  var valor_num = /num=([^&]+)/.exec(window.location.href)[1];
  $("[name='num-edit']").attr('value', valor_num);

  /* Autopreencher os campos do formulário com dados do BD */
  $.post("actions/autosalvar.php", function (data) {
    $("[name='id-cliente']").attr('value', data.id_cliente);
    $("[name='cliente']").attr('value', data.cliente);
    loopcheck();
  }, "json");
});
function loopcheck(){/* Passar dados do formulário a cada 2 segundos para página PHP */
  setInterval(function () {
    var dados = $('#meu_form').serializeObject();
    $.post("actions/autosalvar.php", {'meus_dados':dados}).done(function(data) {

    });
  }, 2000);
}

I hope I have helped.

Good luck!

    
22.02.2017 / 14:57