#php #jquery #function #variables
#php #jquery ( jquery ) #функция #переменные
Вопрос:
В приведенном ниже коде я пытаюсь передать переменные lat и lon в .load()
, но я не могу передать переменные
$(document).ready(function() {
var x=document.getElementById("demo");
function getLocation() {
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML="Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
var lat=position.coords.latitude;
var lng=position.coords.longitude;
$(".content").load("page1.php?lat=" lat "amp;lng=" lng);
}
});
как передать эти две переменные в .load()
?
Комментарии:
1. вы пытались
console.log(lat, lng)
проверить, получаете ли вы переменные в первую очередь?2. @ntgCleaner пожалуйста, отправьте полный код для этого
3. Я сделал. Скопируйте и вставьте эту строку в конец вашей функции ‘showPosition ()’, затем посмотрите на консоль вашего браузера, чтобы увидеть, выводит ли она что-нибудь
Ответ №1:
Я получил ответ здесь — это решение моей вышеупомянутой проблемы
(function ($) {
$.geolocate = function (options) {
var def = $.Deferred();
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(def.resolve, def.reject, options);
} else {
def.reject();
}
return def.promise();
};
})(jQuery);
$.geolocate().done(function(position){
var lat = position.coords.latitude;
var lng = position.coords.longitude;
//alert("Lat : " lat " Lng:" lng);
$(".content").load("page1json.php?lat=" lat "amp;lng=" lng);
});
Ответ №2:
То, что у вас там есть, должно сработать..
$(".content").load("page1.php?lat=" lat "amp;lng=" lng);
При условии, что lat и lng действительно что-то содержат.
Проверьте, действительно ли они содержат значения.
console.log("Lat : " lat " Lng:" lng);
Также в вашем page1.php файл, вы, очевидно, должны их восстановить.
<?php if(isset($_GET)){
$lat = $_GET['lat']; $lng = $_GET['lng'];
}
Также похоже, что ваша функция showPosition() принимает аргумент position, но вы вызываете ее без него…
navigator.geolocation.getCurrentPosition(showPosition);
для того, чтобы lat и lng действительно возвращали что-либо, вам нужно передать позицию в функцию showPosition() .
navigator.geolocation.getCurrentPosition(showPosition(yourPositiionValue));
Хотя я не могу вам в этом помочь, потому что я не знаю, откуда вы получаете эту позицию.
т.е. .. я не знаю, что бы вы передали в него
Но, в конечном счете, я говорю это потому, что showPosition() нуждается в аргументе.
function showPosition(argument) {
// These will be empty, if you don't provide said argument
var lat=argument.coords.latitude;
var lng=argument.coords.longitude;
$(".content").load("page1.php?lat=" lat "amp;lng=" lng);
}
Без него lat и lng всегда будут пустыми, следовательно, никогда не будут работать
Комментарии:
1. Я только хочу знать, что приведенный выше код правильный или я иду в неправильном направлении спасибо за вашу помощь
2. Ну, первоначальный вопрос, который вы задавали о .load(), верен. Как у вас это есть, обязательно передаст их на эту страницу php. Так что да, вы в правильном направлении. Но все, на что я указываю, это то, что lat, lng будет пустым, если вы не передадите аргумент
3. Я помог вам, насколько мог, с кодом, который вы дали. Без фактического аргумента position, который вам нужно передать в showPosition(), я мало чем могу вам помочь. Потому что тот факт, что вы вызываете showPosition() без аргумента, является причиной того, что lat и lng пусты, а загрузка не работает