5

私はプロトタイプライブラリを使用する初心者です。Prototype の onSuccess/onFailure 関数に複数の引数を渡す方法を知りたいですか? 例えば:-

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 関数に新しい引数を渡したいです。そんなことがあるものか。助けてくれてありがとう。

4

1 に答える 1

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(...)に割り当てられたままであるため、パラメーターにアクセスできます。

実行中のスニペットはこちらで確認できます。

于 2009-07-24T07:51:19.083 に答える