asp.net 如何在'CallServer'方法中以编程方式实现客户端回调而无需回发?

sf6xfgos  于 2023-05-08  发布在  .NET
关注(0)|答案(2)|浏览(182)

从这个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" />
4bbkushb

4bbkushb1#

可以使用ASP.NET页方法来解决此类问题。
这里是example
you can use jQuery to call an ASP.NET Page Methods
当然,您需要启用ScriptManager的“EnablePageMethods”才能启用PageMethods。

htrmnn0y

htrmnn0y2#

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

<script type="text/javascript">

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

</script>

相关问题