json脚本中的变量url

时间:2011-05-19 02:02:50

标签: javascript jquery json geolocation

闲逛几天知道。学习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";

in

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

但这不起作用。有人建议我怎么解决这个问题。

3 个答案:

答案 0 :(得分:0)

这:http://www.192.168.1.111只是一个错误的网址。我想你需要这个:http://192.168.1.111

答案 1 :(得分:0)

地理定位可能需要很长时间(多秒)。这是一个异步请求,这意味着其他javascript代码可能在地理位置抓取地址之前执行。解决方案是在navigator.geolocation.getCurrentPosition

上放置使用回调函数内部位置的任何代码或函数调用

在定义lat和lng之前,JQuery正在构建URL。

答案 2 :(得分:0)

的onload = “的getLocation();”告诉我们在加载文档时调用getLocation函数并在此函数内部将<P id="locatie"> TAG的innerHTML设置为:http://www.192.168.1.111/tools/gpslocation.php?lat=" + p.coords.latitude + "&lon= " + p.coords.longitude + "&max=20

所以问题是:

  1. 如果你创建了一个脚本标记并分配了源代码,那么浏览器会获取源数据,但是在<p>标记的内部html上写一个网址将不会这样做而且没有意义。
  2. 下面的代码片段是在加载文档之前加载的,但我猜你不想这样:

    jQuery的(函数(){

    var script = document.createElement('script');  script.type = '文本/ JavaScript的';  script.src =“http://www.192.168.1.111/tools/gpslocation.php?lat = 53.216493625&amp; lon = 6.557756660461426&amp; max = 20”;  $( “机构”)追加(脚本); });

  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是未定义的。


  4. 解决方案我不确定你究竟问的是什么,所以无法回答。是否要分配#locatie元素的内部HTML或者是否要将自定义脚本作为标记加载?

    无论哪种方式,你都必须对服务器进行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";
      }
    });