从这个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 页面方法来解决此类问题。
这是一个example.
此外,您可以使用 jQuery 调用 ASP.NET 页面方法。
当然,您需要启用
EnablePageMethods
的“ScriptManager
”才能启用PageMethods。
HandleResult 将从 GetCallbackResult 接收结果以进行进一步处理。 将以下代码添加到您的 aspx 页面
<script type="text/javascript">
//the parameter arg is what is returned from GetCallbackResult
function HandleResult(arg, context) {
alert(arg);
}
</script>