0

jQueryアプリケーションでAJAX呼び出しを行うために使用しています。を使用して特定のコンテキストでメソッドをinovkeするにはどうすればよいjQueryですか?以前dojoはを使用してそれを行っていましたdojo.hitch()。jQueryに似たようなものはありますか?以下は、使用しているサンプルコードです。successのコンテキストでハンドラーを実行する必要がありますSampleMethodresultSetHandler以下のコードは、ウィンドウコンテキストでは使用できないため、例外が発生するはずです。教えていただけませんか。

jQueryバージョン1.3.2を使用しています

function SampleMethod(){
    this.invokeProcedure=function(procedurePath){
        $.ajax({
                type: "GET",
                url: procedurePath,
                dataType: "json",
                success: resultSetHandler,
                error: errorHandler
            });
    }

    this.resultSetHandler=function(args){
        //Handle the result
    }

    this.errorHandler=function(args){
        //Handle the result
    }

}

var sampleObj=new SampleMethod();
sampleObj.invokeProcedure('url');
4

2 に答える 2

2

そのバージョンのjQueryは、現時点ではどうしようもなく古いので、アップグレードする必要があります。あなたが探している機能はjQuery.proxy、1.4以降でのみ利用可能です。

最新へのアップグレードを検討する必要がありますが、アップグレードする場合は、現在4つのメジャーバージョンしか遅れていません。

3.5年前のライブラリをアップグレードできない環境で作業している場合は、ソースjQuery.proxyを自分でコピーして機能させることを検討してください。

于 2012-07-10T18:23:24.037 に答える
2

それらを保存thisして関数でラップするだけです。

this.invokeProcedure=function(procedurePath){
        var savedThis = this;
        $.ajax({
                type: "GET",
                url: procedurePath,
                dataType: "json",
                success: function() { savedThis.resultSetHandler(); },
                error: function() { savedThis.errorHandler(); }
            });
    }

(おそらく、「success」関数の引数を「resultSetHandler」にも渡す必要があります。)


編集$.ajax—上記は一般的なケースでこの種の問題を処理しますが、@ Blasterはコメントで、jQueryメカニズムがより簡単な解決策を提供することを正しく指摘しています。context渡すパラメータオブジェクトにプロパティを設定でき、その値がコールバックのコンテキストとして使用されます。つまり、次を追加します。

context: this,

パラメータオブジェクトに追加すると、最初に記述した$.ajaxとおりに機能します。

于 2012-07-10T18:23:24.607 に答える