私は JS 初心者なので、明らかなことを見逃していたら申し訳ありませんが、私が行った検索では意味のあるものを取得できませんでした。
データの移動先の変数の名前として、ajax呼び出しを行う関数に渡されるパラメーターを使用しようとしています。例えば:
ajaxFun("[url loctaion].json?callback=?","main","mainData");
取得した JSON オブジェクトは「mainData」変数を使用してアクセスできるという考えですが、変数名「expData」でアクセスできるようにする必要がある取得する別のファイルがあるため、これを明示的に使用することはできません。これらはどちらもグローバル変数であり、ページの読み込み時にすでに宣言されています。
以下は動作する現在のコードですが、ajax 呼び出しの成功部分にある「if、else if、else」ブロックを抽象化したいと思います。
function ajaxFun(urlS,jsonpCallbackS,dataSource){
$.ajax({
type: "GET",
url: urlS,
async: false,
jsonpCallback: jsonpCallbackS,
contentType: "application/json",
dataType: "jsonp",
cache: false,
success: function(source){
if(dataSource === "expData"){
expData = source;
}
else if(dataSource === "mainData"){
mainData = source;
}
else{
console.log('data not set');
}
},
error: function(classData){
console.log('error');
}
});
}
eval() の使用や結果のオブジェクトへの追加など、さまざまな方法を試しました。
var dataCon = {};
function ajaxFun(urlS,jsonpCallbackS,dataSource){
$.ajax({
type: "GET",
url: urlS,
jsonpCallback: jsonpCallbackS,
contentType: "application/json",
dataType: "jsonp",
cache: false,
success: function(source){
var name = dataSource;
alert(name);
dataCon.name = source;
},
error: function(classData){
console.log('error');
}
});
}
使用:
'ajaxFun("[url loctaion].json?callback=?","main","mainData");'
「mainData」というアラートが表示されますが、dataCon の console.log で、「source」の値が「name」というキーに設定されていることがわかります。