我需要调用几个地方的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);
}
});
},
答案 0 :(得分:2)
你打电话
source: callAutoCompleteAjaxMethod(query, ...
但你从来没有给'查询'一个值,给它一个值,它会起作用。
答案 1 :(得分:1)
您调用该函数,而不是将其分配给source属性。此时变量query
未定义。
你必须分配一个函数,以便插件可以在以后调用它:
source: function (query, process) {
callAutoCompleteAjaxMethod(
query,
process,
"/EditInitiatives.svc/GetLocationData?clientId=" + $value.val()
);
}
(我希望$value
在某处定义)
函数引用后的括号(()
)总是立即调用该函数。如果要传递对函数的引用,则不要在其后面加上括号。