То, что я пытаюсь сделать здесь, отправляет переменную JavaScript в функцию PHP. Я разрабатываю приложение jQuery Mobile, в котором вы можете зарегистрироваться, когда достигнете определенной долготы / широты. Но у меня проблема с отправкой долготы / широты в PHP-функцию. Я отправляю его на PHP-функцию, потому что я собираюсь провести сравнение с долготой / широтой, которую я сохранил в своей базе данных.
Вот мой код.
function testResults() { if(navigator.geolocation) { //Get the current position navigator.geolocation.getCurrentPosition(function(position) { var latitude = position.coords.latitude; var longitude = position.coords.longitude; document.write("lat", latitude); document.write('<br /><br />'); document.write("long", longitude); }); } else { alert("Sorry... your browser does not support the HTML5 GeoLocation API"); } //////////// Here I tried with jQuery/Ajax. I know that it's wrong. //////////// Im putting it here so that it maybe clarifies what Im //////////// trying to do. $.post("checkLocation.php", { lat : latitude, longi : longitude }, function(data) { alert("Data Loaded: " + data); }); //////////////////////////////////////////////////////////////////// } testResults();
Как мне подойти к этой проблеме? Я пытался с JSON, но я не получил его работать. Любая помощь будет оценена.
Вы отправляете запрос до того, как получите ответ геолокации
Вам нужно сделать это внутри обратного вызова.
Попробуйте использовать AJAX
http://api.jquery.com/jQuery.ajax/
Ваш обработчик должен выглядеть так:
$.ajax({ type: "POST", url: "checklocation.php", data: "lat="+latitude+"&longi="+longitude }).done(function( msg ) { alert( "Data Saved: " + msg ); });
navigator.geolocation.getCurrentPosition(function(position) { var latitude = position.coords.latitude; var longitude = position.coords.longitude; document.write("lat", latitude); document.write('<br /><br />'); document.write("long", longitude); });
у вас здесь есть широта и долгота местных варов. Если вы хотите использовать их вне этой функции, вы можете использовать глобальные vars:
var latitude; var longitude; //... navigator.geolocation.getCurrentPosition(function(position) { latitude = position.coords.latitude; vlongitude = position.coords.longitude; document.write("lat", latitude); document.write('<br /><br />'); document.write("long", longitude); }); //usage(transfer) of vars
Попытайтесь использовать AJAX-Request в обратном вызове (доказательство концепции, а не shure, если оно работает):
function testResults() { if (navigator.geolocation) { //Get the current position navigator.geolocation.getCurrentPosition(function (position) { var latitude = position.coords.latitude; var longitude = position.coords.longitude; // do callback $.ajax( { type: "POST", url: "checklocation.php", data: "lat=" + latitude + "&lon=" + longitude }).done(function (msg) { alert("Data Saved: " + msg); }); }); } else { alert("Sorry... your browser does not support the HTML5 GeoLocation API"); } } testResults();
Приветствия. Фрэнк