JSON值为查询字符串

时间:2014-04-30 02:19:31

标签: javascript json drupal-7 geoip maxmind

我在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',我怎么能使用&#34; Detroit&#34;作为从另一个文档,表格等检索数据(例如本地电话号码)的密钥?

最终目标是动态插入&#34; local&#34;电话号码进入&#34;联系我们&#34;基于访问者位置的部分。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

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

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

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

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

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

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

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