JQuery возвращает неопределенный вызов POST - PullRequest
0 голосов
/ 03 марта 2011

Я уверен, что это что-то действительно легкое, но я такой нуб, когда застреваю на этих вещах ... Прошло более 2 часов, я ненавижу, когда это происходит: (

Почему это возвращение не определено?

function userExists(user) {
$.post("misc/user_exists.php",  {user: user},
        function(result) {
            return '' + result + '';
        });
});

Файл php прекрасно возвращает имя пользователя, как я вижу в ответах от firebug. Но тогда эта функция бесполезна, когда я вызываю предупреждение после вызова, она всегда не определена, возвращаю ли я строку, логическое значение и т. Д.

Спасибо!

Ответы [ 4 ]

6 голосов
/ 03 марта 2011

Запрос $.post является асинхронным, поэтому при запуске return '' + result + ''; он фактически никуда не возвращает данные.Вместо этого запустите другое событие изнутри функции успеха AJAX.

1 голос
/ 03 марта 2011

Вам необходимо добавить правильный параметр dataType для команды jQuery post. Ссылка: http://api.jquery.com/jQuery.post/

0 голосов
/ 03 марта 2011

Вы можете сделать это

function userExists(user) {
    var username = '';
$.post("misc/user_exists.php",  {user: user},
        function(result) {

            username = result ;
        });
   return username;
});
0 голосов
/ 03 марта 2011

проблема в том, что возврат повлияет только на обратный вызов ajax.sucess из метода post. Попробуйте это:

function userExists(user, callback) //because this can be async, you need a callback...
{
    $.post("misc/user_exists.php",  {user: user},
    function(result) 
    {
        if(callback)
            callback(result)
        return '' + result + '';
    });
};
userExists('someUser', function(result)
{
     alert('' + result + '')
});

или вы можете убедиться, что вызов не асинхронный:

function userExists(user) //because this can be async, you need a callback...
{
    var res;
    $.post("misc/user_exists.php",  {user: user},
    function(result) 
    {
        res = result;
    });
    return res;
};
$.ajax({async:false}); 
alert('' + userExists('someUser'+ '');    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...