質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

5回答

4456閲覧

javascriptで値が取得できているのにアラートで表示されない

TaruOrder

総合スコア76

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

1グッド

0クリップ

投稿2016/01/20 09:39

$(document).ready(function(){

$.get("js/1Month.txt",function(data){ if (data != ""){ OneMonth = data; } }) alert(OneMonth);

})

ファイルからデータは取得できているのは確認しました。
$.get内で取得したデータをOneMonth変数に入れ替え
$.get外でアラートを使い表示しようと思ったのですが
うまくいきません...どうすれば表示されるのでしょうか?

dddd_gond👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

一応、同期通信にすればお求めの動作になりますが、**「get メソッドの処理が完了するまで(txtファイルのダウンロードが完了するまで)は後述処理が停止する」**ので一般には推奨されないやり方ですね。

JavaScript

1'use strict'; 2jQuery(document).ready(function (jQuery) { 3 var OneMonth; 4 5 jQuery.ajax('test.txt', {async: false, success: function (data) { // 同期通信にする 6 if (data !== ''){ 7 OneMonth = data; 8 } 9 }}); 10 11 alert(OneMonth); 12});

非同期通信は後述処理と別スレッドで実行するので jQuery の場合は Deffered を使って対応する事をお勧めします。
もしくは callback 関数を別の場所に置いて対応してみてください。

'use strict'; jQuery(document).ready(function (jQuery) { var OneMonth; jQuery.get('test.txt', function (data) { if (data !== ''){ OneMonth = data; } }).done(function () { // Defferd で受け取る alert(OneMonth); }); });

Re: TaruOrder さん

投稿2016/01/20 13:02

編集2016/01/20 13:03
think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ps13zierさんのおっしゃるとおり$.getの結果が戻ってきていないうちにalertが呼ばれているのでうまくいきません。$.getではなく$.ajaxを使ってコールバック関数の中でalertを使えば、なんとなく「外でアラートを使い表示」できているような、できていないような。。

javascript

1$(document).ready(function(){ 2 var OneMonth; 3 var alertMe = function(data){ 4 OneMonth = data.responseText; 5 alert(OneMonth); 6 } 7 $.ajax({ 8 url: "js/1Month.txt", 9 complete: alertMe 10 }); 11});

投稿2016/01/20 13:01

jinco

総合スコア432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

$.get() の呼出直後のタイミングではテキストの読込が完了していないため、$.get() の直下に記述しても、そのコードがテキストの読込完了前に動いてしまうため、意図する処理ができていないのではないでしょうか?その場合は、読込成功時の箇所に処理を書くのが妥当です。別な所で処理したければ関数を分けて呼び出すと良いでしょう。また、他でパラメータ(この場合は読み込んだテキスト)を使うことが無ければ、必要なパラメータを引数として渡すことで、変数として確保する必要もなくなります。具体的には以下の様なコードが参考になるかもしれません。

JavaScript

1var url= "js/1Month.txt"; 2 3function load(data) { 4 alert(data); 5} 6 7$.get(url, function(data) { 8 if (data != "") { 9 load(data); 10 } 11});

投稿2016/01/20 10:00

ps13zier

総合スコア433

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

javascript

1$(document).ready(function(){ 2 $.get("js/1Month.txt",function(data){ 3 if (data != ""){ 4 OneMonth = data; 5 alert(OneMonth); 6 } 7 }) 8})

投稿2016/01/20 09:58

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaruOrder

2016/01/20 10:00

解答ありがとうございます! $.get外でアラートは無理なのでしょうか...
退会済みユーザー

退会済みユーザー

2016/01/20 10:16

無理です。実行した結果がすべてです。
guest

0

var OneMonth かな。

投稿2016/01/20 09:54

ipadcaron

総合スコア1693

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問