Как я могу получить возврат данных из запроса jquery ajax? - PullRequest
0 голосов
/ 25 мая 2010
function isNewUsername(str){
    var result;
    $.post('/api/isnewusername', 
            {username:str},
            function(data) {
                result = data.result;
            }, 
            "json");
    return result;
}

Итак, моя проблема очень проста, но я не могу ее понять. Я хочу получить доступ к результату из функции isnewusername. Мне очень интересно узнать ответ, потому что я потратил на него 1 час. Спасибо

Ответы [ 2 ]

2 голосов
/ 25 мая 2010

Это не может быть сделано так, как вы делаете, так как ajax-запросы асинхронны (то есть они не блокируются, и результат не будет получен мгновенно, он будет получен, когда сервер действительно ответит) Вам придется вызывать другую функцию с результатами (или иначе, делать что-то с результатами, только когда они действительно доступны).

Например:

function isNewUsername(str){
    $.post('/api/isnewusername', 
            {username:str},
            function(data) {
                someOtherFunction(data.result);
            }, 
            "json");
}
0 голосов
/ 25 мая 2010

В качестве краткого примечания, когда вы используете jQuery post-функцию , вы используете сокращенную форму jQuery ajax-функции , которая означает, что вы делаете асинхронный вызов. Поэтому только в случае успешного ответа jQuery будет вызывать вашу функцию и помещать результат от вашего запроса на стороне сервера в параметр data вашего успешного обратного вызова.

Для иллюстрации:

function isNewUsername(str){
    $.post('/api/isnewusername', 
            {username:str},
            function(data) {
                alert(data.result);
            }, 
            "json");
}

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

...