JSON值作为查询字符串



我在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:nn"
        + JSON.stringify(location.city.names.en, undefined, 4)
    );
};
var onError = function(error){
    alert(
        "Error:nn"
        + JSON.stringify(error, undefined, 4)
    );
};
geoip2.omni(onSuccess, onError);
</script>

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

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

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

通常情况下,您将格式化如下的查询字符串:

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

例如,它可能看起来像这样:

http://mydomain.com/phoneNumbers/phoneNumber?city=Detroit

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

  • 使用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>

相关内容

  • 没有找到相关文章

最新更新