我在我的应用程序中广泛使用$。(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委托......除了将变量打包成通用数组之外,我无法想到其他解决方案。
你们是怎么解决这个问题的?
答案 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函数返回的数据变量混淆...