2009-07-24 96 views
4

我是使用Prototype库的初学者。我想知道我们如何将多个参数传递给Prototype中的onSuccess/onFailure函数? 例如: -如何将多个参数传递给Prototype中的onSuccess函数?

new Ajax.Request('testurl',{ 
     method: 'post', 
     parameters: {param1:"A", param2:"B", param3:"C"}, 
     onSuccess: fnSccs, 
     onFailure: fnFail 
     }) 

在我的成功函数fnSccs: -

function fnSccs(response) 
{ 
    alert(response.responseText); 
} 

我想通过一个新的参数fnSccs功能。这怎么可能。谢谢你的帮助。

回答

7

你可以换你成功的函数到另外一个,临危所需的参数,并返回旧功能回到:

new Ajax.Request('testurl',{ 
       method: 'post', 
       parameters: {param1:"A", param2:"B", param3:"C"}, 
       onSuccess: mySuccess('myValue1', 'myValue2'), 
       onFailure: fnFail 
       }) 

function mySuccess(param1, param2){ 
    return function(response){ // Your old success function 
    alert(param1); // The parameter still accessible here 
    alert(param2); 
    alert(response); 
    } 
} 

什么情况是,当你调用mySuccess(...)返回旧的功能,但你仍然可以访问参数,因为变量仍然分配在外部closure上。

您可以检查正在运行的代码段here

+0

为什么你会创建一个函数,当一个简单的闭包会完成这个把戏? onSucess:function(response){myNextStep(response,'a','b'); } – epascarello 2009-07-24 15:02:15

+0

@epascarello:因为OP要求*参数传递*特别是... – CMS 2009-07-24 19:59:30

+0

是mySuccess()在您创建新的Ajax.Request()中的第二个参数的那一刻没有执行,因此在请求发送之前很久?对我来说,似乎对于'onSuccess'这个关键字,只是mySuccess的返回值被赋值,这是未定义的... – Remi 2013-09-10 19:14:01

相关问题