我正在尝试构建此函数数据,以获取一个JavaScript对象并处理一段时间,它需要一个回调函数,因此我尝试在该对象内部传递该函数,但是当我调用此函数时,它说该函数不存在此函数仍然存在,当我将其作为参数传递时,仅当我从JavaScript对象获取回调函数名称时才会发生这种情况
function Ajax(data){
//ajax stuff
var filtered_respons = response_from_ajax;
//tryed this all not working
data['callback'](filtered_response,'loading');
var fun_name = data['callback'];
fun_name(filtered_response,'loading');//
}
从html页面开始,我将此函数称为
let data = {
url:'./assets/php/category.php',
type:'POST',
callback :'toprender',
data:{all_cats:1},
element_name:'cat'
}
Ajax(data);
当我尝试这种方式时,它会起作用
AjaxCaller(data,topfunction,true);
这是整个功能
AjaxCaller(data,callback,need){
var loader= "";
if(typeof data['loader'] !== "undefined"){
loader = $("#"+data['loader']);
}else{
loader = $("#loading");
}
loader.show();
if(typeof data['url'] !== "undefined" && typeof data['type'] !== "undefined"){
var $self = this;
$.ajax({
url:data['url'],
type:data['type'],
data:data['data'],
success:function(response){
loader.hide();
var response = JSON.parse(response);
var filtered_response = $self.ajaxError(response);
if(need==true){
callback(filtered_response,data['element_name']);
}
}
});
}else{
console.log('Please Re Check The Objects');
}
}
答案 0 :(得分:2)
您正在尝试使用字符串作为函数。你不能那样做。
您可能只想将callback :'toprender'
更改为callback :toprender
:
let data = {
url:'./assets/php/category.php',
type:'POST',
callback :toprender,
data:{all_cats:1},
element_name:'cat'
}
Ajax(data);
这会将callback
设置为功能,而不是字符串。
实时示例:
function toprender() {
console.log("toprender called");
}
function Ajax(data) {
data.callback();
}
let data = {
url:'./assets/php/category.php',
type:'POST',
callback :toprender,
data:{all_cats:1},
element_name:'cat'
}
Ajax(data);