繁体   English   中英

javascript中调用方法,但是会引发错误?

[英]calling method in javascript, but error throws?

我需要在几个地方调用ajax方法。 因此,要尝试通过为其创建单独的方法来尽量减少代码。 如果直接使用,效果很好。 但是当我分开时,它将无法工作。

    data: columns[5],
    type: 'autocomplete',   
    options: { items: 100 },
    source: function (query, process) {    
            $.ajax({
            url: "/EditInitiatives.svc/GetLocationData?clientId=" + $value.val(),
            type: "GET",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: {
                      query: query
                   },
            success: function (response) {
                        process(response.d);
                     }
             });
          },
          strict: true
}

如果我这样打电话,那是行不通的。 它说Microsoft JScript runtime error: 'query' is undefined ,如何解决?

{
    data: columns[4],
    type: 'autocomplete', 
    options: { items: 100 },
    source: callAutoCompleteAjaxMethod(query, process, "/EditInitiatives.svc/GetLocationData?clientId=" + $value.val()),
    strict: true

 },

callAutoCompleteAjaxMethod = function (query, process, url) {
                 $.ajax({
                    url:url,
                    type: "GET",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    data: {
                        query: query
                    },
                    success: function (response) {
                        process(response.d);
                    }
                });
            },

你打电话

source: callAutoCompleteAjaxMethod(query, ...

但是您从来没有给“查询”一个值,而是给它一个值,它将起作用。

您正在调用该函数,而不是将其分配给source属性。 并且目前还没有定义变量query

您必须分配一个函数,以便该插件以后可以调用它:

source: function (query, process) {
    callAutoCompleteAjaxMethod(
        query, 
        process, 
        "/EditInitiatives.svc/GetLocationData?clientId=" + $value.val()
    );
}

(我希望在某个地方定义$value

函数引用后的括号( () )始终立即调用该函数。 如果要传递对该函数的引用,则不要在其后加上括号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM