如何在“CallServer”方法中使用此技巧以编程方式实现客户端回调而无需回发?

问题描述 投票:0回答:2

从这个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);

尽管我将其设为异步,但始终响应等于未定义。我该如何解决这个问题?

编辑

导致我尝试上述解决方案的主要问题是我需要在 Asp 按钮的

OnClientClick
中调用“CallServer”方法并返回 true 或 false,如下所示:

 <asp:Button ID="Button1" runat="server" Text="Button" 
        OnClientClick="return CallServer('arg','');" onclick="Button1_Click" />
asp.net javascript callback
2个回答
1
投票

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

此外,您可以使用 jQuery 调用 ASP.NET 页面方法

当然,您需要启用

EnablePageMethods
的“
ScriptManager
”才能启用PageMethods。


0
投票

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

    <script type="text/javascript">

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

</script>
© www.soinside.com 2019 - 2024. All rights reserved.