我是一个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