我是 JS 菜鸟,如果我错过了明显的内容,但我所做的搜索未能检索到任何对我有意义的内容,我深表歉意。
我一直在尝试使用传递给进行ajax调用的函数的参数作为数据应该去向的变量的名称。例如:
ajaxFun("[url loctaion].json?callback=?","main","mainData");
这个想法是,然后可以使用“mainData”变量访问检索到的 JSON 对象,但是我不能明确使用它,因为我有另一个文件要检索,应该可以在变量名“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”的键中。