未捕获的TypeError:回调不是函数

时间:2015-05-07 10:58:52

标签: javascript jquery ajax

我有一个功能:

reportAdminActions.reportMemberList(project, function(data) {
    console.log(data);
}); 

此函数由另外一个ajax操作调用,如下所示:

reportMemberList: function(projectId, callback) {
    var projectDetail = new Object();
    projectDetail.projectId = projectId;
    var pluginArrayProject = new Array();
    pluginArrayProject.push(projectDetail);   
    $.ajax({
        url : ConfigCom.serverUrl + 'projectreportonmember',
        dataType: "jsonp",
        type: "POST",
        data: JSON.stringify(pluginArrayProject)
    }).always(function(data) {
        callback(data.responseText);
    });
}

我需要在ajax操作后返回值到函数定义区域。但在这里我得到了一个错误

Uncaught TypeError: callback is not a function

2 个答案:

答案 0 :(得分:1)

检查代码的其余部分是否有对reportMemberList的调用,并确保始终使用回调作为参数调用它。如果你在任何地方省略了回调参数(例如只用reportMemberList参数调用projectId),上面的代码将正确解析用回调对函数的其他调用会产生错误。 (这是我的解决方案。)

答案 1 :(得分:0)

猜测,但试着改变你的" jsonp"到" json"。如果你不在那里提出跨域请求,它应该可以正常工作

reportMemberList: function(projectId, callback) {
    var projectDetail = new Object();
    projectDetail.projectId = projectId;
    var pluginArrayProject = new Array();
    pluginArrayProject.push(projectDetail);   
    $.ajax({
        url : ConfigCom.serverUrl + 'projectreportonmember',
        dataType: "json",
        type: "POST",
        data: JSON.stringify(pluginArrayProject)
    }).always(function(data) {
        callback(data.responseText);
    });
}