即使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';
}
答案 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
但不会被使用。