【发布时间】:2011-05-07 12:40:07
【问题描述】:
我正在尝试弄清楚如何完成以下任务:
- 处理按钮的客户端单击事件 - 如果 javascript 调用的结果为 false(例如
onclick="js:return IsThisAllowed()"),则防止回发 - Javascript 方法将返回 true 或 false,具体取决于使用 ScriptManagerProxy 调用生成的 Web 服务方法的结果
下面的代码被简化为我在这个问题中提到的主要组件。我可以 alert() 返回值没问题,但我遇到问题的部分是如何将 Web 服务方法调用的结果返回给按钮 onclick 处理程序?由于函数 Finish() 在我假设是 XmlHttp.send() 调用成功后在单独的线程中被调用,我如何将响应的值作为 javascript 方法的返回值发送?我是不是搞错了?
我以前曾多次使用类似的代码来使用返回值更新 DOM,例如在 <div> 中,但从来不必担心捕获返回值并在我的脚本中使用它。
到目前为止我所拥有的:
.NET 网络服务方法(VB.NET):
<WebMethod()> _
<ScriptMethod()> _
Public Function IsAllowed() As Boolean
Return True
End Function
.NET 代码为页面生成 AJAX web 服务方法,以及 html 按钮
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
<Services>
<asp:ServiceReference Path="~/WebServices/MyWebService.asmx" />
</Services>
</asp:ScriptManagerProxy>
<asp:Button ID="_btn" runat="server" OnClientClick="js:return IsAllowed();" />
Javascript
<script type="text/javascript">
function IsAllowed(orderid) {
if (!processing) {
processing = true;
var ws = new MyWebService();
ws.IsAllowed(Finish, Error)
// return TRUE if call to IsAllowed returns true!!!
return false;
}
}
function Finish(result) {
alert(result)
}
function Error() {
}
</script>
【问题讨论】:
标签: javascript asp.net ajax asp.net-ajax xmlhttprequest