※ ChatGPTを利用し、要約された質問です(原文:jqueryのajax()内からグローバル配列に)
jqueryのajax()内からグローバル配列に値を格納したい
jqueryのajax(){success: function()内からグローバル連想配列に値を格納したい。
jqueryのajax()でhtmlファイルを読み込み配列に格納。
その後他の関数で使いたいと考えていますが
グローバル連想配列に格納できません。
success: function()内でさらに関数を定義もして見ましたが反応せず。。。
(プルダウンメニューを変更したら実行する関数)
以下ソースになります。
-----------------------------------------------------------
$(function() {
objectarray = new Object();
$.ajax({
type: 'GET',
url: 'hoge.html',
dataType: 'html',
success: function(data) {
var text = [];
$(data).each(function(i){
text = $(this).text().split("\n");
});
var alldata = $.grep(text, function(e){return e;});//空白やデータなしを削除
for(i=0; i<alldata.length; i++){
objectarray[i] = (alldata[i]);
alert("forの中" + objectarray[i]);//取得できた
}
alert("forの外" + objectarray);//取得できた
return objectarray;//あってもなくても変わらない。。。
},
error:function() {
alert('問題がありました。htmlデータがありませんでした。');
}
//return objectarray;←有効にするとjsが認識されなくなります。
});
alert("ajaxの外" + objectarray[0]);//何も表示されない、firebugでみるとobjectarrayには値が入っている。
});
-----------------------------------------------------------
上記はnew Object()でやっておりますがnew Array()でも同じ結果でした。
回避策をご教授いただけましたら幸いです。
どうぞよろしくお願いいたします。
お礼
ngsvxさん、ご回答ありがとうございます。 別の方法にて対応してしまいました。 ありがとうございます。 また機会がありましたら試してみたいと思います。