Javascript AJAX在调用后返回未定义的变量
我正在用Jquery、AJAX、PHP和JSON开发一个会话系统 这是我的通用AJAX函数:Javascript AJAX在调用后返回未定义的变量,javascript,php,jquery,json,ajax,Javascript,Php,Jquery,Json,Ajax,我正在用Jquery、AJAX、PHP和JSON开发一个会话系统 这是我的通用AJAX函数: function ajaxConn(incomingUrl,incomingData) { var returnValue; $.ajax({ url:'backend/'+incomingUrl, method:'POST', data: JSON.stringify(incomingData), contentType: "appl
function ajaxConn(incomingUrl,incomingData)
{
var returnValue;
$.ajax({
url:'backend/'+incomingUrl,
method:'POST',
data: JSON.stringify(incomingData),
contentType: "application/json; charset=UTF-8"
}).done(function(response){
returnValue = response.resp;
});
console.log(returnValue);
}
这是函数的调用和要使用的结果的存储。变量数据具有以前过滤和验证的输入值
var data = {user:user,pass:pass};
var answer = ajaxConn('core_files/startSession.php',data);
console.log(answer);
这是我的PHP代码的标题
require 'connection.php';
mysqli_set_charset($conn,"utf8");
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
$data = json_decode(file_get_contents('php://input'), true);
$user = mysqli_real_escape_string($conn,$data["user"]);
$pass = mysqli_real_escape_string($conn,$data["pass"]);
$response = array();
多次验证后,PHP根据会话大小写返回一个单词:
它可以返回
$response["resp"] = 'N';
echo json_encode($response);
错误的会话或
$response["resp"] = 'Y';
echo json_encode($response);
为了会议的成功
问题是返回值,如果我在AJAX调用中执行console.log(returnValue)
,它将从PHP返回正确的单词。但是,如果我退出AJAX调用,并尝试对函数执行相同的操作,它将返回未定义的结果。实际上,在函数的返回中,它也返回未定义的,在
ajaxConn();
我做错了什么
控制台。将其记录在中。完成
。您当前的console.log在ajax请求完成之前立即运行,并且该值尚未定义。ajax是异步的。因此,即使您使用“=”符号,也不意味着您得到了一个结果。$。延迟器将帮助您避免这样做,您可以在未完成请求之前打印变量,这就是它未定义的原因。将console.log放入函数中,您将看到结果。若要返回值,只有一种方法,那个就是使ajax请求同步。但我不建议这样做。不管怎样,您的ajaxConn可能应该接受第三个参数,这是一个成功调用的回调函数。我不会亲自使用它。这将限制你第一次遇到边缘案例。