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

こんにちは!

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

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

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

 

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);
});
})();