函数与jquery ajax在其中没有返回值

时间:2010-10-19 00:23:23

标签: javascript jquery ajax

即使ajax调用正确执行

,此函数也不会返回任何值

功能:

function queryData(request)
{
    var ret = null;
    $.ajax({
        url: 'ajax.php',
        data: 'requestdata='+request,
        dataType: 'json',
        type: 'post',
        success: function (j) {
            if(j.ok == true)
                return j.data;
            else
                return 'error';
        }
    });
    return 'error';
}

4 个答案:

答案 0 :(得分:3)

ajax函数异步工作,这意味着它会在从服务器返回结果时执行success函数。

由于AJAX请求的性质,queryData函数将始终返回'error'(至少以这种方式执行)。您可以强制同步完成ajax请求,但这通常不是所需的行为。

您应该在成功函数中添加所需的逻辑,而不是尝试将其返回。如果您愿意,可以将命名函数传递给success选项。请参阅ajax here上的jQuery文档。

答案 1 :(得分:0)

你做不到。

AJAX是异步,这意味着您的函数将在服务器发送响应之前返回 您需要使用回调传递值,方式$.ajax

答案 2 :(得分:0)

此函数在ajax调用实际完成之前返回一个值。 ajax调用是一个异步操作,所以当你执行$ .ajax()调用时,它会立即返回,你的函数会在第16行返回'error'并返回'error'。

几毫秒后,ajax调用完成,你的成功函数被执行,但它的返回值不会去任何地方。

答案 3 :(得分:0)

success函数将异步调用。首先,函数初始化ajax请求,并以最后一个语句return 'error';结束。之后,在收到服务器的响应后,success函数将从jQuery调用。它返回jQuery但不会被使用。