Общение


Синхронный вызов


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

В качестве результата работы в клиентский скрипт возвращается объект call, который содержит результат работы и дополнительную статусную информацию. Свойство return_value объекта call содержит результат работы удаленного метода. Другие свойства объекта call позволяют получить информацию о статусе вызова удаленной процедуры.

Если вы создали page объект, то можно использовать стандартный object.method() синтаксис для вызова процедуры. Но кроме этого есть возможность вызова серверных методов без page объекта.

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

  • Если вы создали page объект, то вызов выглядит следующим образом:

    JavaScript: callObject = ASPObject.methodName(p1, p2[,...]) VBScript: set callObject = ASPObject.methodName(p1, p2[,...])

  • Если page объект создан не был, используется RSExecute() функция и вызов выглядит так:

    JavaScript: callobject = RSExecute(url, methodName, p1, p2[,...]) VBScript: set callobject = RSExecute(url, methodName, p1, p2[,...])

    Где:

  • сallObject - имя call объекта;
  • ASPObject - объект ссылающийся на ASP страницу.
  • url - URL ASP страницы содержащей описание серверных методов. Эта страница должна находится на том же сервере, что и страница осуществляющая вызов.
  • methodName - имя метода, который вы хотите исполнить.
  • p1, p2 - параметры необходимые для вызова methodName метода. Параметра передаются по значению. В качестве параметров могут быть переданы значения простых типов.

    В качестве примера рассмотрим скрипт в котором при нажатии на кнопку btnAdd вызывается серверный метод Add. В качестве параметров передается содержимое полей ввода txt1 и txt2, а результат выводится в текстовом поле txt3:

    <script language = "JavaScript" for = "btnAdd" event="onclick"> rsMath = RSGetASPObject("../myPages/RSMath.asp"); number1 = txt1.value; number2 = txt2.value; co = rsMath.Add(number1,number2); txt3.value = "The sum is " + co.return_value; </script>

    Аналогичный вызов, но без использования page объекта:

    <script language = "JavaScript" for = "btnAdd" event="onclick"> number1 = txt1.value; number2 = txt2.value; co = RSExecute("RSmath.asp","add",number1,number2); txt3.value = "The sum is " + co.return_value; </script>

    Как видно из второго примера для удаленного вызова используется функция RSExecute(). В качестве параметров передается URL ASP страницы, имя серверного метода и параметры.



    Содержание раздела