如何在服务调用完成时注册一个被调用的代码隐藏回调?

时间:2010-06-10 13:29:31

标签: asp.net javascript jquery web-services

我正在使用带有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;
                    }

                });

所有这些都正确发生并且一切正常,但我只是在尝试使用异步调用代码隐藏时遇到问题 - 因为我需要更新下拉列表来刷新其数据源 - 就像这里一样我刚刚添加了一个新条目。

1 个答案:

答案 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;
        }
    }