Necesito ayuda y consejo si es posible.
Estoy trabajando en una tarea para un curso en línea y estoy perplejo. Tengo el html a continuación, tratando de enviar un valor de latitud a ajax para una solicitud de php a la API de geonames y devolver el océano más cercano. He intentado un par de formas diferentes, como se muestra a continuación en el código html.
<select id="latitude"> <option value= "3.4360">3.4360</option> <option value="lat">133.7751</option> <option value="lat">106.3468</option> </select> <select id="longitude"> <option value= 55.3781>55.3781</option> <option value="lng">25.2744</option> <option value="lng">56.1304</option> </select>
Y esta es la solicitud de ajax que debería extraer la información del html anterior.
$('#btnRun').click(function() { $.ajax({ url: "libs/php/getCountryInfo.php", type: 'POST', dataType: 'json', data: { lat: parseInt($('#latitude').val()), lng: parseInt($('#longitude').val()) }, success: function(result) { console.log(JSON.stringify(result)); if (result.status.name == "ok") { $('#txtDistance').html(result['data'][0]['distance']); $('#txtGeonameID').html(result['data'][0]['geonameid']); $('#txtName').html(result['data'][0]['name']); } }, error: function(jqXHR, textStatus, errorThrown) { // your error code } }); });
No creo que los dos se vinculen en absoluto y también eché un vistazo a la opción parseInt, pero ahora no tengo ideas.
Gracias por cualquier ayuda que pueda brindar.
Las etiquetas <option>
en su Html son incorrectas, el atributo de valor se establece en las cadenas lat
y lng
y no en las latitudes y longitudes reales.
<select id="latitude"> <option value="3.4360">3.4360</option> <option value="133.7751">133.7751</option> <option value="106.3468">106.3468</option> </select> <select id="longitude"> <option value="55.3781">55.3781</option> <option value="25.2744">25.2744</option> <option value="56.1304">56.1304</option> </select>
Además, si excluye el atributo de valor, el texto dentro de la opción se considera su valor. El marcado a continuación es equivalente al de arriba.
<select id="latitude"> <option>3.4360</option> <option>133.7751</option> <option>106.3468</option> </select> <select id="longitude"> <option>55.3781</option> <option>25.2744</option> <option>56.1304</option> </select>
Los valores de latitud y longitud no son números enteros, por lo que no puede usar parseInt en ellos, tampoco hay razón para analizarlos como valores numéricos, ya que se convertirán nuevamente en String para enviarlos en la llamada ajax.
$.ajax({ url: "libs/php/getCountryInfo.php", type: 'POST', dataType: 'json', data: { lat: $('#latitude').val(), lng: $('#longitude').val() }, success: function(result) { console.log(JSON.stringify(result)); if (result.status.name == "ok") { $('#txtDistance').html(result['data'][0]['distance']); $('#txtGeonameID').html(result['data'][0]['geonameid']); $('#txtName').html(result['data'][0]['name']); } }, error: function(jqXHR, textStatus, errorThrown) { // your error code } });