Как мы можем передать несколько параметров в метод onSuccess PageMethod? - PullRequest
5 голосов
/ 09 декабря 2010

Я вызываю PageMethod "SameMethod" из метода javascript "caller", чтобы я мог получить некоторые значения из БД.После получения значений управление продолжается в методе «onSuccess».Проблема заключается в том, что мне нужно использовать некоторые значения переменных ("ImportantValue") из метода javascript "Caller" в методе "onSuccess".

function caller(){
    var importantValue = 1984;   
    PageMethod.SomeMethod(param1,..., onSuccess, onFailure)
}

Метод onSuccess должен выглядеть примерно так:

function onSuccess(pageMethodReturnValue, importantValue ){

}

Возможно ли и, если это так, передать несколько параметров (помимо возвращаемых значений метода страницы) в "onSuccess "метод PageMethod?

Спасибо за помощь

Ответы [ 2 ]

12 голосов
/ 09 декабря 2010

Передайте ваш importantValue в качестве дополнительного параметра при вызове метода PageMethod. (это обычно называется параметром контекста, если вы ищете в Интернете для получения дополнительной информации)

function caller(){
    var importantValue = 1984;   
    PageMethod.SomeMethod(param1,..., onSuccess, onFailure, importantValue)
}

Затем вы можете получить доступ к значению в обратном вызове onSuccess следующим образом:

function onSuccess(pageMethodReturnValue, context, methodName){
    // context == 1984
}

Обновление для объяснения параметров onSuccess для @JacksonLopes На сайте aspalliance есть хорошее описание в статье Suresh Kumar Goudampally

Важный бит (модифицированный для использования моих имен параметров):

Метод успешного обратного вызова имеет три параметра:

  • pageMethodReturnValue - Возвращает вывод метода страницы.
  • context - Это используется для обработки другой логики, когда один запрос обратного вызова используется для запросов метода нескольких страниц Мы также можем пройти массив значений в качестве параметра context.
  • methodName - Этот параметр возвращает имя вызванного метода страницы.
4 голосов
/ 09 декабря 2010

Вы можете использовать анонимную функцию

PageMethod.SomeMethod(param1,..., function(){onSuccess(foo, importantValue)}, onFailure)
...