【问题标题】:Variable url in json-scriptjson脚本中的变量url
【发布时间】:2011-05-19 02:02:49
【问题描述】:

混了几天就知道了。学了几个星期的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);
};

在html文件中

<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";

但这不起作用。任何人都建议我如何解决这个问题。

【问题讨论】:

  • 您实际上并没有调用 ajax 函数。您实际上是在告诉 locatie 的内部 HTML 成为 url 文本。尝试使用 jquery ajax 函数,然后使用该数据。 api.jquery.com/jQuery.ajax

标签: javascript jquery json geolocation


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    地理位置可能需要很长时间(几秒钟)。这是一个异步请求,这意味着其他 javascript 代码可能会在地理位置获取地址之前执行。解决方案是将使用该位置的任何代码或函数调用放在回调函数内navigator.geolocation.getCurrentPosition

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

    【讨论】:

      【解决方案3】:

      onload="getLocation();"告诉当加载文档时调用 getLocation 函数,在这个函数中你将&lt;P id="locatie"&gt; TAG 的 innerHTML 设置为:http://www.192.168.1.111/tools/gpslocation.php?lat=" + p.coords.latitude + "&amp;lon= " + p.coords.longitude + "&amp;max=20

      所以问题是:

      1. 如果您创建一个脚本标签并分配源,那么浏览器会获取源数据,但在 &lt;p&gt; 标签的内部 html 上写入一个 url 不会这样做,而且没有意义。
      2. 下面的代码片段是在加载文档之前加载的,但我猜你不希望这样:

        jQuery(函数(){

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

      3. 如果你想要:script.src= "http://www.192.168.1.111/tools/gpslocation.php?lat=" + p.coords.latitude + "&amp;lon= " + p.coords.longitude + "&amp;max=20";,那么你必须先定义 p.coords,然后再调用它,否则 p.coords 是未定义的。


      解决方案我不确定您到底在问什么,所以无法回答。您是要分配#locate 元素的内部 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";
        }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-27
        • 2015-06-25
        • 2017-08-03
        • 1970-01-01
        相关资源
        最近更新 更多