我正在尝试将javascript函数的名称传递给全局变量。我有一个围绕$ .ajax()构建的通用“CallMyWebService”函数。函数的url,动词,contenttype等是根据全局变量的值设置的。在调用服务函数之前,将设置全局变量并在全局变量为空之后。
我的通用“CallMyWebService”功能在这里:
function CallMyWebService() {
$.ajax(
{
url : varUrl,
type : varHttpVerb,
cache : varCacheBool,
data : varData,
contentType : varContentType,
processdata : varProcessData,
dataType : varDataType,
async : varAsync,
success : varOnSuccess,
error : varOnError,
complete : varOnComplete
}
)
}
我遇到的问题是将函数名称传递给varOnSuccess
,varOnError
和varOnComplete
。如果我有一个名为SuccessCallback()
的函数,并且我希望将服务调用的result
传递给SuccessCallback()
,那么如何将其分配给varOnSuccess
全局变量?变量赋值将在另一个名为SetupServiceCall()
的函数中进行。换句话说,在SetupServiceCall()
函数中应该如何完成varOnSuccess =
?
答案 0 :(得分:2)
我会说:
varOnSuccess = SuccessCallback;
查看jQuery文档,了解SuccessCallback()将接收的参数的详细信息。
答案 1 :(得分:2)
CallMyWebService应该接受这些函数作为参数。您还应该通过引用而不是字符串名称传递它们。
不要做全局变量。如果你有任何类型的并行调用,这将失败。
示例:
function CallMyWebService(successCallback, errorCallback) {
$.ajax(
...
success: successCallback,
error: errorCallback
...
);
}
//calling the service
function MySuccessHandler(data) {
alert('success');
}
function MyErrorHandler(data) {
alert('error');
}
CallMyWebService(MySuccessHandler, MyErrorHandler);
答案 2 :(得分:0)
var varOnSuccess = null;
function SetupServiceCall() {
varOnSuccess = SuccessCallback; //note
}
答案 3 :(得分:0)
您可以在ajax调用中简单地使用不带括号的函数名称,例如:
$.ajax({
...
success: SuccessCallback,
error: ErrorCallback,
...
});
答案 4 :(得分:0)
window.varOnSuccess = SuccessCallback
应该有效
但是,我认为最好将变量部分作为参数传递给CallMyWebService:
function CallMyWebService(varSuccess, varError) {
$.ajax({
url : varUrl,
type : varHttpVerb,
cache : varCacheBool,
data : varData,
contentType : varContentType,
processdata : varProcessData,
dataType : varDataType,
async : varAsync,
success : varSuccess,
error : varError,
complete : varOnComplete
});
}