【问题标题】:Geolocation using hostip with javascript使用带有 JavaScript 的 hostip 进行地理定位
【发布时间】:2010-11-22 20:42:42
【问题描述】:

这可能是一个非常愚蠢的问题。我正在尝试使用http://www.hostip.info/use.html 提供的api 进行地理定位,以根据用户的IP 地址查找用户地址。我将它与 jquery 结合使用,代码如下:

$.get("http://api.hostip.info/get_html.php", function(data){
    alert("Data Loaded: " + data);
});

遗憾的是,这似乎不起作用。警报永远不会触发,所以我假设呼叫永远不会返回。有没有人这样做过?谢谢

【问题讨论】:

    标签: javascript web-services jquery geolocation cross-domain


    【解决方案1】:

    我不认为给他们打电话是成功的。跨域限制可能会阻止您读取结果数据。如果 hostip 提供JSONP API,那将是可用的,但我没有在他们的网站上看到任何提及。

    【讨论】:

    【解决方案2】:

    如果您使用 Google 的 AJAX API,那么使用他们的Client Location 功能非常容易获取位置——这不需要任何跨域调用。

    if (google.loader.ClientLocation) {
        var lat = google.loader.ClientLocation.latitude;
        var lon = google.loader.ClientLocation.longitude;
        ...
    

    否则,正如其他人指出的那样,您将需要提供 JSONP 的服务,或者您需要在自己的服务器上编写代理来为您获取数据。

    【讨论】:

      【解决方案3】:

      您不能对 XML 数据进行跨域调用。其他网站提供 JSON 接口:

      http://ipinfodb.com/ip_query.php?ip=999.999.999.999&output=json
      

      您可以使用YUI GET Utility 或通过 JQuery 进行跨域调用。

      【讨论】:

        【解决方案4】:

        您不能从 javascript 调用外部域。这绝对是问题所在。你要么需要在你的服务器上设置一个代理脚本来为你获取远程页面,要么找到一个服务而不是如上所述实现 JSONP。

        【讨论】:

        • 您现在可以使用现代浏览器从 JavaScript 调用外部域。大部分支持CORShttp://api.hostip.info/get_json.php也支持CORS
        猜你喜欢
        • 2011-05-23
        • 2012-01-04
        • 1970-01-01
        • 2010-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多