我正在使用Jquery,AJAX,PHP和JSON开发会话系统。
这是我的通用AJAX功能:
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调用,并尝试在函数中执行相同操作,则返回undefined。实际上,在函数返回时,它返回我的未定义,在
ajaxConn();
我做错了什么
答案 0 :(得分:0)
console.log
在.done
内。您的当前console.log在ajax请求完成之前立即运行,并且尚未定义该值。