新規投稿
フォローする

IPアドレスの取得について

 
お世話になっております
IPアドレスをアプリへのアクセスの記録として保存しようと考えております
 
IPアドレスの取得方法をネットの記事を参考に作ってみたのですが
JQueryで記載しております
 
1と2のwindow alertでは表示されるのですが、3では表示されません
関数の外の変数に値を渡すにはどのようにすればよろしいでしょうか
 
 
また、JQueryなどのライブラリはKintoneシステム管理で設定すれば全アプリで使用できるのでしょうか
 
宜しくお願い致します
 
 
 
 
(function($) {
"use strict";
kintone.events.on('app.record.index.show', function(event) {
 
var IP_Address;

$.get("https://ipinfo.io", function(res) {
//1
window.alert(res.ip);
IP_Address = res.ip;
//2
window.alert(IP_Address);
 

}, "jsonp");
//3
window.alert(IP_Address);

});
})(jQuery);
0

2件のコメント

Avatar
juridon

こんにちは!

ipアドレスを取得している間に、プログラム自体は進んでしまって先に3が実行されているのだと思います。

私がjQueryあんまり分からないので書き方はわからないですが、
「非同期処理」というキーワードも一緒に検索されてみるとなにか見つかるのではないかと思います。
JavaScriptだとthenメソッドチェーン使ったり、await/asyncを使ったりすると大丈夫なやつです。

それと、kintoneシステム管理でjQueryなどライブラリを設定しておけば全アプリで使えます。

 

0
Avatar
kh

juridonさんご指摘の通り、JSの非同期処理のため、先に3が実行されてしまっている状況です。

おそらく「undefined」が最初に表示されているのではないでしょうか。

 

jQueryを使用せずとも以下の方法で簡単に記述することが出来るので参考にしてみてください。

(() => {
"use strict";
kintone.events.on('app.record.index.show', async (event) => {
const response = await kintone.proxy('https://ipinfo.io/json','GET',{},{})
const ipAddress = JSON.parse(response[0]).ip;
window.alert(ipAddress);
});
})();

 

1
サインインしてコメントを残してください。