1

Código: tengo 2 variables

<script type="text/javascript" src="code.jquery.com/jquery-3.2.1.min.js"></script> 
<script>
 var var1 = $("#var1").val(); var var2 = $("#var2").val(); 
$.ajax({ 
url:'recibo.php', 
data:{var1:var1,var2:var2}, 
type:'POST', 
datatype:'json' 
})
</script> 

mi intención es enviarlas por la url OCULTAS O ENCRIPTADAS o si existe alguna otra forma para enviarlas bien sea por JQUERY O AJAX


Mi intencion es enviar los valores a otra pagina con el siguiente codigo.. Pagina Ejemplo.php

 <?php
    $var1=1;
    $var2=2;
    echo "<div class='inner arriba' id='for'>
     <a href='#'><input type='text' name='var1' id='var1' value='$var1'>      <input type='text' name='var2' id='var2' value='$var2'></a>
      </div>";
     ?>
     <html>

     <head>

     <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>

     <script>
         var var1 = $("#var1").val();
         var var2 = $("#var2").val();
         $.ajax({
          url:'recibo.php',
          data:{var1:var1,var2:var2},
         type:'POST',
         datatype:'json'
     })

         var jqxhr = $.ajax( "recibo.php" )
         .done(function() {
          alert("Succes");
     })
         .fail(function() {
          alert( "error" );
      })
         .always(function() {
          alert( "complete" );
      });

        jqxhr.always(function() {
       alert( "second complete" );
    });
    </script>
    </head>
      <body>
     </body>
     </html>

Pagina emjemplo2.php

aqui deseo recibir los valores enviados, estoy investigando como recibirla con json ya que el metodo de envio que utilizo es datatype:'json'

    <?php 
     echo $resultado = $_POST['var1'] + $_POST['var2']; 
      echo $ca=$_POST['var1'];
      echo $ca2=$_POST['var2'];
    ?>
fredyfx
  • 11,989
  • 10
  • 30
  • 58
David
  • 89
  • 1
  • 3
  • 10
  • Otra opción sería, si quieres prescindir de jQuery, hacerlo con puro Javascript, usando Promesas. La respuesta de @MarcosGallardo en esta pregunta: **[Enviar datos al servidor mediante Ajax usando Promesas de JavaScript](https://es.stackoverflow.com/a/87002/29967)** podría ser una opción interesante. – A. Cedano Jul 27 '17 at 19:08

2 Answers2

1

La sintaxis para usar el Ajax en Jquery es la siguiente:

    $.ajax({
    url:'direcciónURL',
    data:{var1:var1,var1:var1},
    type:'GET or POST',
    datatype:'json'

 })
 .done(function(data, textStatus, jqXHR) {

      console.log( "La solicitud se ha completado correctamente." );

   })
 .fail(function(jqXHR, textStatus, errorThrown) {
         console.log( "La solicitud a fallado: " +  textStatus)
  });
});

Tu PHP debería de ser algo así:

<?php 

$var1 = $_POST["var1"];
$var2 = $_POST["var2"];

echo "Valor 1: ".$var1." Valor 2: ".$var2

?>

http://api.jquery.com/jquery.ajax/

M. Gress
  • 1,460
  • 2
  • 12
  • 33
  • 1
    Simplemente señalar que `success` es obsoleto desde jQuery3. La nota dice que se debe usar : `done..., fail.., always..` en su lugar. [Ver enlace](http://api.jquery.com/jquery.ajax/) sobre la nota que lo indica. Sería una excelente respuesta si la modificases usando código actualizado y dando la posibilidad de manejar posibles errores usando para ello `fail`. – A. Cedano Jul 27 '17 at 18:49
  • hice lo que me comentas pero no logro enviar nada, los valores se van en 0 al momento de recirbirlos en la otra pagina – David Jul 27 '17 at 20:47
  • **este es mi Codigo**: – David Jul 27 '17 at 20:52
  • var jqxhr = $.ajax( "recibo.php" ) .done(function() { alert( "success" ); }) .fail(function() { alert( "error" ); }) .always(function() { alert( "complete" ); }); jqxhr.always(function() { alert( "second complete" ); }); – David Jul 27 '17 at 20:56
  • var jqxhr = $.ajax( "recibo.php" ) .done(function() { alert( "success" ); }) .fail(function() { alert( "error" ); }) .always(function() { alert( "complete" ); }); jqxhr.always(function() { alert( "second complete" ); }); – David Jul 27 '17 at 20:56
  • **este es el php** "; ?> – David Jul 27 '17 at 20:57
  • ¿Cómo las recibes en el PHP? ¿Y que momento estas ejecutando tu Ajax? – M. Gress Jul 27 '17 at 20:57
  • echo $ca=$_POST['var1']; echo $ca2=$_POST['var2']; – David Jul 27 '17 at 21:08
  • ejecuto el ajax antes del – David Jul 27 '17 at 21:10
  • Pero en que momento, en que evento, ¿Has mirado que valores obtiene antes de mandarlo al Ajax? – M. Gress Jul 27 '17 at 21:12
  • **Imprimo mis variables y muestra mensaje Undefinido** alert("varaible1"+var1); alert("varaible2"+var2); – David Jul 27 '17 at 21:12
  • las viables les estoy asignado un valor... $var1=1; $var2=2; **ese mismo valor lo obtiene el input dentro del – David Jul 27 '17 at 21:15
  • **POR LOS TANTO VAR1=1 Y VAR2=2** – David Jul 27 '17 at 21:15
  • ¿Podrías modificar tu pregunta y añadir todo el código que has puesto en los comentarios de manera que quede claro de donde tomas el valor y quede por separado tu java script y tu php? – M. Gress Jul 27 '17 at 21:24
  • @David si pones esto en tus `input`: `` es posible que no puedas recuperar por jQuery el valor correcto: `var var1 = $("#var1").val();` ya que el input tendrá un id compuesto por `var1` más el valor de `$var1`. Lo mismo pasa con tu otro input. Los mismos deberían tener solamente esto: `` por cierto, en algunos navegadores tener las mismas etiquetas para el `name` y el `id` podría fallar. [Ver aquí](https://es.stackoverflow.com/a/63793/29967) – A. Cedano Jul 27 '17 at 21:39
0

Otra forma que puedes hacerlo con JQuery es usar la función $.post(), que es un poco más facil en su sintaxis.

$.post("verifi.php",
    {
        variable1: var1,
        variable2: var2
    },
    function(ResultadoPost){
        //ResultadoPost trae cualquier cosa que tu página verifi.php haya servido
});

Puedes ver la información de $.post() en este enlace : http://api.jquery.com/jQuery.post/

Algunas aclaraciones importantes:

  • JQuery (libreria de JavaScript) puede obtener la información de cualquier elemento HTML que tenga asignado un value, mas no puede hacerlo de PHP, espero que tengas esto bien claro.
  • De manera que, para poder usar esta función, el valor de $var1 o $var2 tendria que estar asignado a algún elemento de tu HTML. Como por ejemplo:

    <input id="variable1" value=<?php echo $var1; ?> type="text">

    O cualquier otro elemento de HTML que tenga la propiedad value. Una vez allí obtienes el valor con un selector de JQuery

    var var1 = $("#variable1").value();

    Que como se observa en mi respuesta es el valor que envias a tu archivo verifi.php.

  • El callback, que es la funcion que esta despues de las variables que envias, es completamente opcional.

  • Y vuelvo a recordar, este proceso se da desde una página HTML ya servida (es decir, algo que ya este en el navegador del usuario) hacia un archivo PHP en el servidor. (solo hago la aclaración por la casi contradicción que tienes en tu pregunta)
Kenny Barrera
  • 2,075
  • 3
  • 22
  • 38
  • Intento enviarlos a otra Pagina por ejemplo **recibo.php**, como haria para mostrar ese resultado en la otra pagina? – David Jul 27 '17 at 20:58
  • Dejame ver si entiendo. Lo que quieres es enviar el valor de $var1 y $var2 desde ese archivo php que tienes hacia recibo.php? – Kenny Barrera Jul 27 '17 at 21:17
  • Si es correcto, enviar esa 2 variables y recibirlas eb otro archivo – David Jul 27 '17 at 21:24
  • Ok, vamos por partes @David 1. Esas variables tienen algo que el usuario va a ingresar o son datos que ya sabes de antemano? 2. Para que quieres enviar esas variables al otro archivo? Para mostrarlas a un usuario? Para buscar en una base de datos? – Kenny Barrera Jul 27 '17 at 21:26
  • @David acabo de ver un comentario de M. Gress en la otra respuesta, en el cual te invita a poner el código en donde obtienes el valor de tus variables. Quizas cuando pongas eso te podremos ayudar mejor. – Kenny Barrera Jul 27 '17 at 21:29