在没有回发的情况下以编程方式实现客户端回调的“CallServer”方法中如何做到这一点?

时间:2010-06-22 12:50:30

标签: asp.net javascript callback

从这个example我们可以在没有回发的情况下从JavaScript回调服务器,但是我想让CallServer方法返回结果并尝试如下

    string callBackReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "function(result) {alert(result);response = result;}", "context", "function(result) {response = 'Err';}", true);
    string callbackScript = "function CallServer(arg, context) { var response; " + callBackReference + "; return response;}";
    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackScript, true);

在JavaScript中我执行以下操作

response = CallServer("username", "");
 alert("response:" + response);

总是响应等于undefined虽然我让它异步...
 能帮我找到解决这个问题的方法吗?

注意: 我的主要问题是让我尝试上面的解决方案,我需要在Asp按钮的OnClientClick中调用'CallServer'方法并返回true或false,如下所示

 <asp:Button ID="Button1" runat="server" Text="Button" 
        OnClientClick="return CallServer('arg','');" onclick="Button1_Click" />

2 个答案:

答案 0 :(得分:1)

您可以使用ASP.NET页面方法来解决此类问题 这是一个example

此外,you can use jQuery to call an ASP.NET Page Methods

当然,您需要启用EnablePageMethods的“ScriptManager”才能启用PageMethods。

答案 1 :(得分:0)

HandleResult将从GetCallback Result接收结果以进行进一步处理。 将以下代码添加到您的aspx页面

    <script type="text/javascript">

    //the parameter arg is what is returned from GetCallbackResult
    function HandleResult(arg, context) {
        alert(arg);
    }

</script>