как передать переменные lat lan в .загрузить функцию jquery

#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 пусты, а загрузка не работает