this projectに基づいてweb ui
プロジェクトに取り組んでいます。今私がしたいのは、ユーザーがWebページを開くときに、このページが開かれているデバイスのip address
が返されるということです。このために私はjavascript`コードhereに以下のコードを追加しました:ページを開くデバイスのIPアドレスを取得しようとするとJavascriptページが機能しない
function myIP() {
$.getJSON("//freegeoip.net/json/?callback=?", function(data) {
const ipInformation = JSON.parse(data);
console.log(ipInformation.ip);
return ipInformation.ip;
});
}
const sessionAttr = myIP();
私も同じjavascript
コードファイルの先頭に<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
を追加しました。今度はsessionAttr
の定数がthis code fileの行60で呼び出されます(sessionAttributes: config.lex.sessionAttributes
をsessionAttributes: config.sessionAttr
に変更しました)。
このページをロードしようとすると、何も表示されません。上記のような変更を加えなければ、ページが正しく読み込まれます。だから何とか私はこのページをねじ込んで私の追加でいくつかの間違いをしています。
注:私はJavaScript
に精通していませんが、クイック検索に基づいて上記の変更を行いました。問題は私が作っている非同期呼び出しにあり、これを通過したことがわかりますsuggested linkしかし、私は正しい構造を理解することができません。誰も私に適切な構文を提供して、ページが正しくロードされ、クライアントのip address
を返して、それをsessionAttribute
に設定することはできますか?
UPDATE
: - 私は、コンソールを開いた後に、このコードを実行すると、私はconfigDefault.Bot.sessionAttributes.ip
ためundefined
値を取得 const configDefault = {
Bot: {
// initial sessionAttributes
sessionAttributes: {},
},
};
$(document).ready(function(){
configDefault.Bot.sessionAttributes.ip = myIP();
// undefined
});
function myIP() {
$.getJSON("//freegeoip.net/json/?callback=?", function(data) {
//console.log(data.ip);
return data.ip;
});
}
console.log("myVar:",configDefault.Bot.sessionAttributes.ip);
は、いくつかの提案後、私は(https://jsfiddle.net/ywdeu0o4/3/ここにリンク)私のコードに次の変更を行いました。 IPアドレスではなく、定義されていないのはなぜですか?
あなたの 'myIP()'関数は何も返さないので 'sessionAttr'は' undefined'になります。これは、コールバックにAjaxの結果を渡すためです。あなたの問題は、非同期コールバック関数から値を返すことと関係していると仮定しています。これをチェックしてください:https:// stackoverflow。com/questions/14220321/how-do-i-return-as-asynchronous-call –
@MikaelLennholmしかし、なぜページを読み込まないのですか?上記のコードにエラーがありますか? – user2916886