未捕获的TypeError:未定义不是函数

时间:2013-10-21 10:55:45

标签: jquery ajax json asp.net-mvc-3

当我尝试在家庭控制器中调用方法时,我收到消息Uncaught TypeError:Undefined is not a function

或许建议我收到此消息的原因?

findIdpActivities = function (pernr, callback) {
    restEndPoint = serviceBase + 'Home/FindIdpActivities';
    data = "{'perNr':'" + pernr + "'}";
    makeJsonDataAjaxCall(callback);
};

makeJsonDataAjaxCall = function (callback, obj) {
    $.ajax({
        type: "POST",
        url: restEndPoint,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: data,
        success: function (data) {
            callback(data);
        }
    });
};

点击按钮后执行方法。

$(document).on("click", "input[name=btnViewActivities]", function (e) {
    e.preventDefault();
    var value = $(this).parent().find("input[name=hiddenPerNr]").val();
    dataService.findIdpActivities(value);
});

这是HomeController中的方法

[HttpPost]
    public JsonResult FindIdpActivities(string perNr)
    {
        viewModel.GetIdpActivities(perNr);

        return Json(new
            {
                Activities = viewModel.IdpActivities
            });
    }

1 个答案:

答案 0 :(得分:3)

当您尝试在定义函数之前调用函数时,会发生这种常见的javascript错误。

例如,虽然此代码按预期工作:

var sayHello= function () {
    return 'Hello!'
};

alert(sayHello());

如果你颠倒了语句的顺序,那么“Uncaught TypeError:undefined不是函数”会出现错误:

alert(sayHello());

var sayHello= function () {
    return 'Hello!'
};

因此,我建议您仔细检查您的脚本是否正确加载,并且 findIdpActivities 正在作为 dataService 对象的函数正确初始化。