Я пытаюсь выяснить, как выполнить следующее:
- Обрабатывать событие нажатия кнопки на стороне клиента - предотвращать обратную передачу, если результат вызова javascript равен false (например,
onclick="js:return IsThisAllowed()"
) - Метод Javascript вернет true или false, в зависимости от результата вызова сгенерированного метода веб-сервиса с использованием ScriptManagerProxy
Приведенный ниже код упрощен до основных компонентов, на которые я ссылаюсь в этомвопрос.Я могу предупредить () возвращаемое значение без проблем, но у меня возникла проблема с тем, как вернуть результат вызова метода веб-службы в обработчик кнопки onclick?Поскольку функция Finish () вызывается в отдельном потоке при успешном выполнении, как я полагаю, вызова XmlHttp.send (), как я могу отправить значение ответа в качестве возвращаемого значения метода javascript?Я все об этом ошибаюсь?
Я уже много раз использовал подобный код, чтобы обновить DOM с помощью возвращаемых значений, например, внутри <div>
, но никогда не приходилось беспокоиться о захвате возвращаемого значения.и используя его в моем сценарии.
Что у меня есть:
.NET-метод веб-службы (VB.NET):
<WebMethod()> _
<ScriptMethod()> _
Public Function IsAllowed() As Boolean
Return True
End Function
.NET-код длястраница для генерации методов веб-службы AJAX и кнопка 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>