Foros del Web » Programando para Internet » Jquery »

Problema con ajax

Estas en el tema de Problema con ajax en el foro de Jquery en Foros del Web. Buenas, estoy intentando hacer cálculos mediante una function en un archivo php enviando valores con ajax pero obtengo como respuesta un valor undefined. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 15/10/2015, 06:57
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 15 años, 3 meses
Puntos: 8
Problema con ajax

Buenas,

estoy intentando hacer cálculos mediante una function en un archivo php enviando valores con ajax pero obtengo como respuesta un valor undefined.

Código Javascript:
Ver original
  1. $.ajax({
  2. type: "POST",
  3. url: "distancia.php",
  4. data: {lat1: latOrig, long1: longOrig, lat2: latDestino, long2: longDestino},
  5. success: function(data) {
  6. console.log($('#distanciaCalc').attr('data'));
  7. }
  8. });

Este es el archivo distancia.php

Código PHP:
Ver original
  1. <?php
  2. header('Access-Control-Allow-Origin: *');
  3. $latOrig = $_POST['lat1'];
  4. $longOrig = $_POST['long1'];
  5. $latDestino = $_POST['lat2'];
  6. $longDestino = $_POST['long2'];
  7.  
  8. function distance(a, b, c, d, e) {
  9.     $theta = $lon1 - $lon2;
  10.     $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
  11.     $dist = acos($dist);
  12.     $dist = rad2deg($dist);
  13.     $miles = $dist * 60 * 1.1515;
  14.     $unit = strtoupper($unit);
  15.  
  16.     if($unit == "K")
  17.     {
  18.         return ($miles * 1.609344);
  19.     }
  20.     elseif($unit == "N") {
  21.         return ($miles * 0.8684);
  22.     }
  23.     else
  24.     {
  25.         return $miles;
  26.     }
  27. }
  28.  
  29. $distanciaKm = distance($latOrig, $longOrig, $latDestino, $longDestino, "K");
  30. $distanciaM = ($distanciaKm * 1000) + 200;
  31.  
  32. echo '<div id="distanciaCalc" data="'.$distanciaM.'"></div>';
  33.  
  34. ?>
  #2 (permalink)  
Antiguo 15/10/2015, 14:01
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Problema con ajax

Eso ocurre porque el contenido generado por el archivo PHP, carga después de que la página principal cargó, por lo tanto, el código JavaScript no encuentra al elemento que intentas tomar.

Sería mucho más sencillo si tan solo devolvieras el valor que deseas obtener.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 15/10/2015, 14:09
 
Fecha de Ingreso: enero-2014
Ubicación: Navarra
Mensajes: 94
Antigüedad: 10 años, 10 meses
Puntos: 18
Respuesta: Problema con ajax

Hola.

En el codigo que muestras hay varios errores.

en php no puedes pasar los parametros como en JS

cambia:
function distance(a, b, c, d, e) {

por:
function distance($lat1, $lon1, $lat2, $lon2, $unit) {

y los datos devueltos mediante ajax tambien lo tienes mal
echo '<div id="distanciaCalc" data="'.$distanciaM.'"></div>';

esto no tiene sentido, la capa debe estar en el archivo que llama a php
podrias cambiarlo por:

echo '<h2>Distancia en metros : ' .$distanciaM. '</h2>';


por otro lado en el archivo js tienes un error, no puedes mandar data y recibir data.

tendrias que hacer algo asi:

pagina html

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.   <title>distancia</title>
  3. <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>  
  5. <script type="text/javascript">
  6. $(document).ready(function(){
  7.     $('#btn').click(function(){
  8.         var latOrig = $('input[name=latOrig]').val();
  9.         var longOrig = $('input[name=longOrig]').val();
  10.         var latDestino = $('input[name=latDestino]').val();
  11.         var longDestino = $('input[name=longDestino]').val();
  12.     $.ajax({
  13.     type: "POST",
  14.     url: "distancia.php",
  15.     data: {lat1: latOrig, long1: longOrig, lat2: latDestino, long2: longDestino},
  16.     success: function(dato) {
  17.     $('#distanciaCalc').html(dato);
  18.     }
  19.     });
  20.     });
  21.    
  22. });//fin de ready        
  23. </head>
  24.   <body>
  25.   <form method="POST">
  26.   <table border="0">
  27.   <tr><td>Latitud original </td><td><input type="text" name="latOrig"></td></tr>
  28.   <tr><td>Longitud original </td><td><input type="text" name="longOrig"></td></tr>
  29.   <tr><td>Latitud destino </td><td><input type="text" name="latDestino"></td></tr>
  30.   <tr><td>Longitud destino </td><td><input type="text" name="longDestino"></td></tr>
  31.   </table>
  32.   </form>
  33.   <a href="#" id="btn">Calcular distancia</a>
  34.   <div id="distanciaCalc">Distancia</div>
  35.   </body>
  36.   </html>

y el archivo distancia.php
Código PHP:
Ver original
  1. <?php
  2.   header('Access-Control-Allow-Origin: *');
  3.  
  4.     $latOrig = $_POST['lat1'];
  5.     $longOrig = $_POST['long1'];
  6.     $latDestino = $_POST['lat2'];
  7.     $longDestino = $_POST['long2'];
  8.    
  9.     function distance($lat1, $lon1, $lat2, $lon2, $unit) {
  10.         $theta = $lon1 - $lon2;
  11.         $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
  12.         $dist = acos($dist);
  13.         $dist = rad2deg($dist);
  14.         $miles = $dist * 60 * 1.1515;
  15.         $unit = strtoupper($unit);
  16.      
  17.         if($unit == "K")
  18.         {
  19.             return ($miles * 1.609344);
  20.         }
  21.         elseif($unit == "N") {
  22.             return ($miles * 0.8684);
  23.         }
  24.         else
  25.         {
  26.             return $miles;
  27.         }
  28.     }
  29.      
  30.     $distanciaKm = distance($latOrig, $longOrig, $latDestino, $longDestino, "K");
  31.     $distanciaM = ($distanciaKm * 1000) + 200;
  32.      
  33.     echo '<h2>Distancia en metros : ' .$distanciaM. '</h2>';
  34.   ?>

A ver si asi te ayuda a entender el concepto de $.ajax()
saludos
  #4 (permalink)  
Antiguo 16/10/2015, 10:35
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 15 años, 3 meses
Puntos: 8
Respuesta: Problema con ajax

muchas gracias por su ayuda!

Etiquetas: ajax
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:17.