我是一個JS noob,如果我錯過了顯而易見的道歉,但是我沒有找到任何對我有意義的搜索。使用傳遞給一個函數的參數作爲變量名稱
我一直在嘗試使用一個參數傳遞給一個函數,它使ajax調用作爲數據應該去的變量的名稱。例如:
ajaxFun("[url loctaion].json?callback=?","main","mainData");
的想法是,檢索JSON對象然後使用「mainData」變量訪問,但是我不能,因爲我有其他文件中檢索應該下進行訪問使用此明確變量名稱'expData'。這兩個都是全局變量,並且在頁面加載時已經聲明。
下面是當前代碼的工作,但我想抽象掉了「如果,否則,如果,否則」在Ajax調用的成功部分塊:
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'的鍵上。
謝謝,工作出色。 – joesch
@joesch不客氣':)' – Doorknob