2017-08-04 3 views
-1

訪問者が米国出身の場合は最初のdivを非表示にしたい、訪問者が米国出身でない場合は2番目のdivを非表示にします。どちらのdivも同じクラスです。JQueryはgeoIPに基づいて第1子要素または第2子要素を非表示にします

<div class="myclass">from US</div> 
 
<div class="myclass">not from US</div>

私はfreegeoip.net/jsonといくつかの簡単な実装を見つけたが、私は私の特定のニーズにそれらを適応させることができませんでした。

$.get("http://freegeoip.net/json/", function (response) { 
 
$("#ip").html("IP: " + response.ip); 
 
document.getElementsByClassName(response.country_code)[0].style.display = "none"; 
 
}, "jsonp");

+0

これまでに何を試みましたか?いくつかの例を追加コード –

+0

私はこの例に適応しようとしましたが、失敗しました:https://stackoverflow.com/questions/30173809/how-to-show-or-hide-element-based-on-geo-ip –

答えて

0

あなたは本当にこの時点でやらなければならないことは、AJAX呼び出しを行い、応答を読んでいます。あなたはjQueryのを使用しているので、これは比較的簡単です:

$.ajax('https://freegeoip.net/json/') 
    .done(function (response) { 
     var isUS = response.country_code === 'US'; 
     // Your code to hide/show here. 
    }); 

ことはここでは実施例である:https://jsfiddle.net/TheQueue841/ap3tfyf9/4/

私は元のコードに小さな変更を行いました。不要なコンテンツを避けるために、要素はデフォルトで非表示になっています。

注:何らかの理由でFirefoxはajax呼び出しを拒否しますが、Chromeでは問題なく動作します。 Firefoxには(時には不要な)セキュリティ検証が追加されているため、これはおそらくターゲットサーバ上の何らかのものによるものです。私は働いていたip geolocation apiを見つけることができませんでしたが、他のapiは同じように動作します。国/国コードがどのように格納されているかを確認するには、最初に応答をチェックしてください。

EDIT:ソリューションをクラスではなく位置でターゲットに合わせて更新しました。

+0

ありがとうございました!私はあなたのソリューションに1つの問題があります。divは複雑なPHPによって生成されています。私は変更したくなく、同じものを持っています。クラス名を追加することはできません。クラスにクラスを追加することはできません。そのため、1番目と2番目の子を含むソリューションをリクエストしました。 –

+0

私は言ったように、Sergejの答えを使用できます。そのメソッドを適切な要素を選択する。私はそれをデフォルトで隠しておきましたが、できない場合は、単にeqセレクタ内の数字を入れ替え、 '.show()'を '.hide()'に変更するだけです。 。 –

+0

ありがとうございます、あなたのソリューションは完璧です! –

0

(function($) { 
 
    $(document).ready(function() { 
 
     var isFromUS = true; // Get the flag from your geoIP service 
 
     $('.myclass').eq(isFromUS ? 0 : 1).hide(); 
 
    }); 
 
})(jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="myclass">from US</div> 
 
<div class="myclass">not from US</div>

+0

あなたのコードから場所を取得しますか? –

+0

あなたはコメントを読んでいますか?コードはちょうど別のdiv要素を隠す方法を示し、フラグに基づいています - ユーザーはUSかnoです。しかし、ユーザーの場所を取得する方法ではありません。このフラグはgeoIPサービスまたはHTML5 APIを使用して取得することができます(エンドユーザが許可している場合) – Sergej

+0

Sergejに感謝します。これは私が探していたものです。geoIPを取得するコードを追加できますか? http://freegeoip.net/json/ "、function(response)" ' –

関連する問題