Javascript 函数中包含jquery ajax,不返回值

Javascript 函数中包含jquery ajax,不返回值,javascript,jquery,ajax,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

此函数不会返回任何值,即使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';
}
你不能那样做

AJAX是异步的,这意味着您的函数将在服务器发送响应之前返回。

您需要使用回调传递值,就像
$.ajax
那样。

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

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


您应该在success函数中添加您想要的逻辑,而不是试图返回它。如果愿意,可以将命名函数传递给
success
选项。请参阅ajax上的jQuery文档。

此函数在ajax调用实际完成之前返回一个值。ajax调用是一种异步操作,因此当您执行$.ajax()调用时,它会立即返回,您的函数会在第16行运行到返回“error”并返回“error”


几毫秒后,ajax调用完成,您的success函数被执行,但它的返回值不在任何地方。

将异步调用
success
函数。因此,首先函数初始化ajax请求,并以最后一条语句
返回“error”结束。之后,从服务器接收到响应后,将从
jQuery
调用
success
函数。它返回到
jQuery
,但不会被使用。

的可能重复项