2009-10-29 66 views
36

jQueryを使用してクライアントIPアドレスを取得する方法を知りたいですか?jQueryを使用してクライアントIPアドレスを取得する方法

可能ですか?私は純粋なJavaScriptができないことを知っていますが、JSONPからスタックオーバーフロー自体を使用していくつかのコードがあります。

jQueryを使用して回避策がありますか?

答えて

52

jQueryはJSONPを処理できますが、コールバックで書式設定されたURLを渡すだけですか?例えば$.getJSONメソッドのパラメータ、:

$.getJSON("https://api.ipify.org/?format=json", function(e) { 
 
    console.log(e.ip); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

この例では、本当に簡単JSONPサービスであるがapi.ipify.orgでの実装しました。

クロスドメインソリューションを探していない場合は、コールバックパラメータが不要で純粋なJSONを返すため、スクリプトをさらに簡素化できます。

+0

を試してみましょう。ありがとう。 – Wondering

+0

クールですが、アプリケーションがクォータを超えています:( –

+1

'jsonip.appspot.com'も' CORS'と 'JSONP'をサポートしているようです。 – hippietrail

24

あなたのサーバーへのシンプルなAJAXコール、そしてIPアドレスを取得するサーバー側のロジックは、このトリックを行う必要があります。

あなたが行う可能性がありますPHPのその後
$.getJSON('getip.php', function(data){ 
    alert('Your ip is: ' + data.ip); 
}); 

<?php 
/* getip.php */ 
header('Cache-Control: no-cache, must-revalidate'); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Content-type: application/json'); 

if (!empty($_SERVER['HTTP_CLIENT_IP'])) 
{ 
    $ip=$_SERVER['HTTP_CLIENT_IP']; 
} 
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) 
{ 
    $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; 
} 
else 
{ 
    $ip=$_SERVER['REMOTE_ADDR']; 
} 
print json_encode(array('ip' => $ip)); 
2
function GetUserIP(){ 
    var ret_ip; 
    $.ajaxSetup({async: false}); 
    $.get('http://jsonip.com/', function(r){ 
    ret_ip = r.ip; 
    }); 
    return ret_ip; 
} 

あなたがIPを使用して変数に代入したい場合は、これを試してみてください。ちょうどGetUserIP()

関連する問題