0

Drupal 7 Web サイトで 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>

返される値の 1 つは、訪問者の都市名です。戻り値をクエリ文字列の一部として使用するにはどうすればよいですか?

たとえば、'city.names.en' = 'Detroit'「デトロイト」をキーとして使用して、別のドキュメントやテーブルなどからデータ (市内の電話番号など) を取得するにはどうすればよいでしょうか?

最終的な目標は、訪問者の場所に基づいて「お問い合わせ」セクションに「市内の」電話番号を動的に挿入することです。

4

2 に答える 2

0

通常、クエリ文字列は次のようにフォーマットします。

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

あなたの例では、次のようになります。

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

あなたがやりたいことを達成するための2つのアプローチがあります。

  • 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 に答える