URL переменной в json-скрипте - PullRequest
0 голосов
/ 19 мая 2011

бездельничать на протяжении дней знаю.Изучая javascript и jquery несколько недель, все идет хорошо, но иногда ...

Для мобильного приложения я пытаюсь получить координаты.Показывать их на странице не проблема, но я хочу их в другом месте.

В main.js

var getLocation = function() {
    var suc = function(p) {
        document.getElementById("locatie").innerHTML = "http://www.192.168.1.111/tools/gpslocation.php?lat=" + p.coords.latitude + "&lon= " + p.coords.longitude + "&max=20";
  };

    var locFail = function() {
    };
    navigator.geolocation.getCurrentPosition(suc, locFail);
};

И в htmlfile

<body  onload="getLocation();" >


     <p id="locatie">Finding geolocation...</p></ul>

<div id="geolocation">
Bezig met laden. Momentje geduld</div>
<script type="text/javascript">
jQuery(function(){

 var script=document.createElement('script');
 script.type='text/javascript';
 script.src= "http://www.192.168.1.111/tools/gpslocation.php?lat=53.216493625&lon=6.557756660461426&max=20";
 $("body").append(script);
});

function processTheseTerraces(jsonData){
var shtml = '';
 var results = jsonData.results;
 if(results){
 $.each(results, function(index,value){
 shtml += "<li class='store'><a class='noeffect' href='#'><span class='image' style='background-image: url(pics/terras1.jpg)'></span><span class='comment'>" + value.address + "</span><span class='name'>" + value.building_name + "</span><span class='stars5'></span><span class='starcomment'>132 Beoordelingen</span><span class='arrow'></span></a></li>";
 });

 $("#geolocation").html( shtml );
 }
}
</script>

СейчасЯ хочу, чтобы координаты проходили через JSON и загрузить данные.Я думал изменить

   script.src= "http://www.192.168.1.111/tools/gpslocation.php?lat=53.216493625&lon=6.557756660461426&max=20";

на

script.src= "http://www.192.168.1.111/tools/gpslocation.php?lat=" + p.coords.latitude + "&lon= " + p.coords.longitude + "&max=20";

Но это не работает.Любые предложения, как я могу решить это.

Ответы [ 3 ]

0 голосов
/ 19 мая 2011

Геолокация может занять много времени (несколько секунд). Это асинхронный запрос, который означает, что другой код JavaScript может быть выполнен до того, как геолокация захватит адрес. Решение состоит в том, чтобы поместить любой код или вызовы функций, которые используют местоположение внутри функции обратного вызова на navigator.geolocation.getCurrentPosition

JQuery строит URL до того, как будут определены lat и lng.

0 голосов
/ 19 мая 2011

OnLoad = "getLocation ();"говорит, что когда документ загружается, вызывайте функцию getLocation и внутри этой функции вы устанавливаете innerHTML <P id="locatie"> TAG как: http://www.192.168.1.111/tools/gpslocation.php?lat=" + p.coords.latitude + "&lon= " + p.coords.longitude + "&max=20

Так что проблемы:

  1. Если вы сделаете тег сценария и назначите источник, тогда браузер получит исходные данные, но запись URL-адреса во внутренний HTML-код тега <p> не сделает этого и не будет иметь смысла.
  2. Фрагмент кода ниже загружается перед загрузкой документа, но я думаю, вы не хотите этого:

    jQuery (function () {

    var script = document.createElement ('script')); script.type = 'text / javascript'; script.src = "http://www.192.168.1.111/tools/gpslocation.php?lat=53.216493625&lon=6.557756660461426&max=20"; $ (" body "). append (script);});

  3. Если хотите: script.src= "http://www.192.168.1.111/tools/gpslocation.php?lat=" + p.coords.latitude + "&lon= " + p.coords.longitude + "&max=20"; тогда вам нужно сначала определить p.coords и прежде чем вызывать это, иначе p.coords не определено.


Решение Я не уверен, что именно вы спрашиваете, поэтому могне отвечаю. Вы хотите назначить внутренний HTML-код элемента #locatie или загрузить загруженный скрипт как тег?

В любом случае, вы должны сделать ajax-вызов на сервер, который может выглядеть так:

$.ajax({
  url: "http://www.192.168.1.111/tools/gpslocation.php",
  data: "lat=" + p.coords.latitude + "&lon= " + p.coords.longitude + "&max=20",

success: function(Result){
   // use Result variable in came from the success function.
   document.getElementById("Your_ID_Goes_Here").innerHTML = "do_Something";
  }
});
0 голосов
/ 19 мая 2011

Это: http://www.192.168.1.111 это просто неправильный URL. Я думаю, вам нужно только это: http://192.168.1.111

...