$(document).ready(function(){
$.get("js/1Month.txt",function(data){ if (data != ""){ OneMonth = data; } }) alert(OneMonth);
})
ファイルからデータは取得できているのは確認しました。
$.get内で取得したデータをOneMonth変数に入れ替え
$.get外でアラートを使い表示しようと思ったのですが
うまくいきません...どうすれば表示されるのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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総合スコア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
総合スコア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
総合スコア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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/01/20 10:16
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。