Как работает ASP.NET AJAX при получении значений с сервера? - PullRequest
1 голос
/ 16 мая 2009

Если я хочу вызвать функцию сервера из javascript для получения имени человека из базы данных (просто в качестве примера) ... и я пошел ...

name = myServices.getName (userId);

Если у меня есть диспетчер сценариев со служебной ссылкой на файл .asmx, у которого есть веб-метод getName (int userId) {}, тогда эта функция должна вызываться правильно и, в конце концов, вернет имя для этого userId.

К сожалению, я хочу сделать ....

name = myServices.getName (userId); предупреждение (имя);

однако при работе с ASP.NET AJAX он будет вызывать веб-метод и продолжать выполнение, прежде чем ждать ответа от сервера (что, как я понимаю, является целью ajax, чтобы остановить зависание браузера во время ожидания данных)

Мне нужно вернуть имя с сервера, прежде чем я смогу продолжить выполнение ... Как я могу решить эту проблему?

Ответы [ 4 ]

3 голосов
/ 16 мая 2009

Существует метод, который вы можете добавить в качестве параметра к методу службы, который будет вызывать метод в случае успеха, где вы можете делать другие вещи.

Например:

function test(){

        PageMethods.MyMethod("name", OnMyMethodComplete);

    }



    function OnMyMethodComplete(result, userContext, methodName)

    {

      alert(result);

    }
0 голосов
/ 16 мая 2009

поздравления. Вы сделали свой первый шаг в большой асинхронный мир. Я определенно хотел бы использовать обратные вызовы, предложенные CSharpAtl.

0 голосов
/ 16 мая 2009

Для решения javascript вы можете выполнить цикл, пока имя не будет иметь значения. Настройте время на основе задержки, чтобы приложение реагировало

var time = 100;
window.setTimeout(name = '' ? wait : continue, time);




function wait()
{
    window.setTimeout(name = '' ? wait : continue, time);
}
function continue()
{
    //code having to do with name
    alert(name)
}
0 голосов
/ 16 мая 2009

Если вы хотите вызвать веб-метод синхронно, вам нужно настроить запрос вручную и использовать Sys.Net.XMLHttpSyncExecutor.

Вот пример (см. Функцию ExecuteSynchronously)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...