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 与使用成功函数返回的数据变量混淆...

于 2010-05-14T17:21:44.337 回答