如何将函数设置为需要匿名函数的属性的值

时间:2014-08-12 11:04:06

标签: javascript jquery

我正在使用jquery API - jquery DataTables,我有这段代码:

oSettings.aoDrawCallback.push({
    "fn": function(){

    },
    "sName": "user"
});

在函数体内,我想执行Ajax请求。当我在这里直接写它时:

"fn": function(){
 $.ajax({
    url: "url",
    type: "POST",
    async: false,
    data: data,
    success: function (data) {
        console.log(data);
    }
    }),

还有更多只是一个例子来展示一切正常的方式。然后我创建了自己的函数:

function initCredits(id, inputVal, chkSelected) {

console.log(id);
$.ajax({
    url: "URL",
    type: "POST",
    async: false,
    data: data
    success: function (data) {
    }
 })
 }

并试图像{I}那样做fn

oSettings.aoDrawCallback.push({
    "fn": initCredits(id, inputVal, chkSelected),
    "sName": "user"
});

这给了我一个错误Uncaught TypeError: Cannot read property 'apply' of undefined。现在,文本来自jquery DataTables API,但我可能只有两个原因可能会破坏我的代码,因为它正在将其用于外部函数。首先 - 我试图以错误的方式来协助函数,其次 - 你可能会看到我需要三个变量用于我的ajax请求(id, inputVal, chkSelected),这些变量是从我正在执行此操作的函数中收集的:

oSettings.aoDrawCallback.push({
    "fn": initCredits(id, inputVal, chkSelected),

但是控制台日志显示值是正确的,所以我认为这不太可能成为问题,但我仍然认为它。

1 个答案:

答案 0 :(得分:1)

此:

"fn": initCredits(id, inputVal, chkSelected),

... 调用该函数并指定返回值

要分配该功能,只需执行:

"fn": initCredits,