![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
jQueryでXMLを読み込んでパースした値を戻り値として返す関数を作っているのですが、なぜか動作しません。
すみませんがどこがいけないのか教えていただけないでしょうか?
-- JS ----------------------
function getValueXML(){
var value = "初期値";
jQuery.ajax({
url: "/text.xml",
type: 'get',
dataType: 'xml',
timeout: 1000,
success: parse_suc,
error: parse_err
});
function parse_suc(xml){
value = $(xml).find("hoge").text();
}
function parse_err(){
alert("XMLの取得に失敗しました");
}
return value;
}
-- test.xml ---------------------
<?xml version="1.0" encoding="UTF-8"?>
<root>
<hoge>テスト</hoge>
</root>
このgetValueXML関数を実行すると戻り値には"初期値"が返ってきます。
試しにparse_suc関数を以下のようにしてみたら"テスト"がアラート表示されました。
つまりparse_suc関数内ではXMLのパースがうまくいっているようなのです。
function parse_suc(xml){
value = $(xml).find("hoge").text();
alert(value);
}
しかしparse_suc関数を出るとvalueにはその値が引き継がれません。
valueのスコープがjQueryだとどういう風になっているのかよくわからなく、ずっと悩んでいます。
お手数ですがおわかりの方がいましたらご説明頂ければと思います。
No.1ベストアンサー
- 回答日時:
jQuery.ajaxでasyncフラグを特にセットしていないので、
jQuery.ajaxはデフォルトの非同期通信動作をします。
なので、コールバック関数parse_sucが呼ばれるのは、
function getValueXMLを抜けた後です。
値引き継ぎとかスコープの問題以前に、
return value;を通過した時点では、まだparse_sucは呼ばれてさえいません。
あと、jQueryを使っていようがJavaScript のスコープは変わりませんよ。
(jQueryはただのライブラリなのでJavaScriptの言語仕様が変わったりはしない。)
こんな夜中にどうもありがとうございます!
jQueryはそういう仕様だったのですね・・・。
asyncをfalseにして同期通信にしてみたらうまく戻り値に値が入りました!
この辺り、もっと勉強しないとダメですね・・・。
教えてくださって本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- その他(ゲーム) com3d2で無料dlcをダウンロードしたところキャラ編集を開こうとすると、 (0) parse E 1 2023/08/05 18:30
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- その他(パソコン・スマホ・電化製品) pthonのframeに演算結果(数値)を表示したい 1 2023/06/05 22:08
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語クイックソートの比較総回...
-
javascriptでhiddenに二次元配...
-
ラジオボタンの選択で解答・点...
-
クイズ作成:15個の問題から5個...
-
jQueryの戻り値がうまくいかな...
-
チェックボックスのグループ化...
-
ホームページビルダーVer6で、...
-
プルダウンで作文!?
-
チェックボックスやラジオボタ...
-
フォームの必須項目を埋めるま...
-
■int型の数値から数字文字への...
-
ラジオボタンとテキストを同時...
-
セルの色>何が足りないのでし...
-
onchangeイベントを強制的に発...
-
JavaScript ログアウト処理
-
ラジオボタン未チェックの場合...
-
Tablesorteを2行一組でソートする
-
テキストボックスの中身を選択...
-
テーブルの項目の値取得
-
セレクトメニューで選択された...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
value内に変数を入れたい
-
hiddenのvalueの値を変えたい
-
javascriptでhiddenに二次元配...
-
複数のsubmitボタンで押された...
-
テキストボックスに入力された...
-
switchを使って四則演算のプロ...
-
VB.NET DateTimeの型について
-
C言語クイックソートの比較総回...
-
クイズ作成:15個の問題から5個...
-
セレクトボックスの初期選択状...
-
ラジオボタンの選択で解答・点...
-
子から親へチェックボックスの...
-
ラジオボタンと連動して文字列...
-
setIntervalの間隔を途中で変更...
-
JAVASCRIPTで、ボタンを押した...
-
sessionStorageを調べています。
-
クリックの度に加算していくには?
-
マクロ オブジェクト変数With...
-
3桁区切りのカンマをつけたい...
-
selectboxのoptionタグのvalue...
おすすめ情報