我正在使用带有ASP页面的Web服务。我想保留服务中发生的大部分内容,但我需要从代码隐藏中调用一个函数。我该怎么做并保持异步。?
如何在服务调用完成时注册回调到的代码隐藏?
谢谢!
编辑: 额外信息:我使用jQuery库中的$ .ajax调用asmx Web服务。我想避免太多的更改,但我的最终结果必须是从服务调用函数,并在完成调用代码隐藏函数时,尽可能异步。
$.ajax({
type: "POST",
url: "WebService.asmx/InsertClient",
contentType: "application/json; charset=utf-8",
data: insertdata,
dataType: "json",
success: function (msg) {
pkey = msg.d;
inserted();
return false;
},
error: function (msg) {
alert(msg.status + msg);
return false;
}
});
所有这些都正确发生并且一切正常,但我只是在尝试使用异步调用代码隐藏时遇到问题 - 因为我需要更新下拉列表来刷新其数据源 - 就像这里一样我刚刚添加了一个新条目。
答案 0 :(得分:1)
如果您从JS调用Web服务,可以在JS中连接OnSuccess事件,然后从Javascript对您的页面执行__doPostback。
示例:
`function testCall(){ WebServiceProxy.GetDocuments(param01,this.onSucceed,this.onFailure); }
function onSucceed(result){ //如果结果还可以 __doPostback(clientID,params); }
function onFailure(result){ }`
在asp Page / UserControl中,您需要实现IPostBackEventHandler。例如:
public void RaisePostBackEvent( string eventArgument )
{
switch( eventArgument )
{
case "CallComplete":
OnWebServiceCompleted( new WebServiceCompletedEventArgs( value1 ) );
break;
default:
break;
}
}