Jquery的$。(ajax)包装器 - 将参数传递给委托

时间:2010-05-14 17:00:46

标签: jquery ajax parameter-passing

我在我的应用程序中广泛使用$。(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委托......除了将变量打包成通用数组之外,我无法想到其他解决方案。

你们是怎么解决这个问题的?

1 个答案:

答案 0 :(得分: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函数返回的数据变量混淆...