1

アプリで $.(ajax) 関数を広範囲に使用して、ASP.net Web サービスを呼び出します。すべての ajax 呼び出しを一元化するためにラッパーを書きたいと思います。簡単な解決策はほとんど見つかりませんでしたが、次のような場合、パラメーターをデリゲートに渡す問題に対処するものはありません。

$.ajax({
        type: "POST",
          url: "http://localhost/TemplateWebService/TemplateWebService/Service.asmx/GetFoobar",

        data: jsonText,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var results = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;

            OnSuccess(results, someOtherParam1, someOtherParam2);


        },

        error: function(xhr, status, error) {
            OnError();
        }
    });

この呼び出しのラッパーには、someOtherParam1、someOtherParam2 を OnSuccess デリゲートに渡す方法が必要です...変数を汎用配列にパックする以外に、他の解決策は考えられません。

皆さんはこの問題にどのように対処しましたか?

4

1 に答える 1

0

同じ問題がありました。それを回避する方法は、データ変数にパラメーターを含めてから、成功/エラー/完了時に this.data からそれを引き出すことでした。this.data は、返されると foo=1&bar=2&baz=3 のようになるため、パラメーターを解析する必要があります。

$.ajax({
  url: 'blah.html',
  data: {foo:1,someOtherParam1:2,someOtherParam2:3},
  success: function(data) {
    var params = this.data.split("&");
    OnSuccess(results, params[1].split("=")[1], params[2].split("=")[1]);
  }
});

this.data を、success 関数で返されるデータ変数と混同しないように注意してください...

于 2010-05-14T17:21:44.337 に答える