0

我在我的 Drupal 7 网站上使用 Maxmind.Com 的 GeoIP2 (Omni) Web 服务来根据访问者的 IP 提取地理数据。

我可以使用以下代码获取 JSON 文档:

<script type="text/javascript" src="//js.maxmind.com/js/apis/geoip2/v2.0/geoip2.js">
</script>

<script type="text/javascript">

var onSuccess = function(location){
    console.log(
        "Lookup successful:\n\n"
        + JSON.stringify(location.city.names.en, undefined, 4)
    );
};

var onError = function(error){
    alert(
        "Error:\n\n"
        + JSON.stringify(error, undefined, 4)
    );
};

geoip2.omni(onSuccess, onError);

</script>

返回值之一是访问者的城市名称。如何将返回的值用作查询字符串的一部分?

例如,如果'city.names.en' = 'Detroit',我如何使用“底特律”作为键从另一个文档、表格等中检索数据(例如本地电话号码)?

最终目标是根据访问者的位置动态地将“本地”电话号码插入“联系我们”部分。

4

2 回答 2

0

可以有两种方法来实现您想要做的事情。

  • 使用ajax获取城市名称后加载联系信息。这是一个例子:

<span id="contact"></span>

<script type="text/javascript">
    $(document).ready(function() {
        geoip2.omni(function(data) {
            $.ajax({
                type: "GET",
                url: "your/url/to/contact/getter/service",
                data: {
                    city : data.city.names.en
                },
                success: function(contact) {
                    // update your contact information
                    $("#contact").text(contact);
                }
            }
        }, function(data) {
            debugger;
        });
    });
</script>

显然,您需要一个可以请求提供给定城市名称的联系信息的资源。

  • 创建联系信息地图并使用它来获取城市的联系信息,而无需再次发送请求。

<span id="contact"></span>

<script type="text/javascript">
    var contactMap = {
        NewYork : "123123",
        London : "9797987"
    }
    $(document).ready(function() {
        geoip2.omni(function(data) {
            // update your contact information
            $("#contact").text(contactMap[data.city.names.en]);
        }, function(data) {
            debugger;
        });
    });
</script>

于 2014-04-30T03:33:46.773 回答
0

通常,您将像这样格式化查询字符串:

http://mydomain.com/route?parameterName=value

对于您的示例,它可能如下所示:

http://mydomain.com/phoneNumbers/phoneNumber?city=Detroit
于 2014-04-30T02:23:32.067 回答