Ноябрь 2, 2005

Remote Scripting - удаленное исполнение скрипта (Часть 6)

Как и при синхронном вызове, асинхронный вызов создает объект call, содержащий результат работы серверного метода и дополнительную статусную информацию.

При асинхронном вызове объект call передается в callback функцию в качестве параметра. Следовательно, вы можете проверить статус вызова и получить результат работы метода.

Так как при асинхронном вызове необходимо передать ссылку на callback функцию, то используется только JavaScript.

Для вызова серверного метода асинхронно:

Если вы создали page объект, то используется следующая форма вызова.

callObject = ASPObject.methodName(p1, p2[,...],
callbackFunction, errorCallbackFunction, context);

В противном случае используется RSExecute() функция:

callobject = RSExecute(url, methodName, p1, p2[,...],
callbackFunction, errorCallbackFunction, context)

Где:
callobject - имя call объекта;
ASPObject - объект ссылающийся на ASP страницу;
url - URL ASP страницы содержащей описание серверных методов. Эта страница должна находится на том же сервере, что и страница осуществляющая вызов;
methodName - имя метода, который вы хотите исполнить;
p1, p2 - параметры необходимые для вызова methodName метода. Параметра передаются по значению. В качестве параметров могут быть переданы значения простых типов.
callbackFunction - ссылка на JavaScript функцию в клиентском скрипте, которая будет вызвана, когда удаленный метод окончит работу. Т. к. вы передаете ссылку, не включайте имя функции в кавычки.
errorCallbackFunction - ссылка на необязательную JavaScript функцию в клиентском скрипте, которая будет вызвана, если при работе удаленного метода произойдет ошибка. Т. к. вы передаете ссылку, не включайте имя функции в кавычки.
context - необязательные параметры вызова, эти данные вернутся обратно.

Например, в следующем скрипте асинхронно вызывается серверный метод square. После работы метода вызывается функция showResults(). Имя операции передается как context-параметр.

<script language = "JavaScript" for = "btnSquare" event = "onclick">
rsMath = RSGetASPObject("../myPages/RSMath.asp");
number1 = txt1.value;
context = "squaring";
co = rsMath.square(number1,showResults,context);
</script>

Аналогичный пример с использованием RSExecute метода:

<script language = "JavaScript" for = "btnSquare" event = "onclick">
number1 = txt1.value;
context = "squaring";
co = RSExecute("RSmath.asp","square",number1,showResults,context);
</script>

продолжение следует...

Разместил:

Автор:

Ваш комментарий

Обсудить на форуме?

Подумайте, прежде чем высказать своё мнение. Постарайтесь сделать свой комментарий полезным для других. Не используйте ненормативную лексику. Пользователи, пишущие "от нечего делать" бессмысленные наборы символов, будут блокироваться навсегда.