-2
我正在用Jquery,AJAX,PHP和JSON开发一个会话系统。AJAX在调用后返回undefined变量
这是我的通用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);
成功会话。
问题在于价值回报,如果我在0123.里面调用AJAX,它会从PHP返回正确的单词。但是,如果我从AJAX调用中退出,并且我尝试从funcion中执行相同的操作,它将返回未定义的状态。其实,在函数的返回返回我不确定也一样,
ajaxConn();
之外,我做错了
Ajax是异步的。所以即使你使用'='符号,这并不意味着你会得到一个结果。 $ .deferer会帮助你 – SouXin
不要这样做,你在ajar请求完成之前打印变量,这就是为什么它是未定义的。将console.log放入函数中,您将看到结果。如果你想返回值只有一个方法,使ajax请求同步。但我不建议这样做。 –
对于它的价值,您的ajaxConn应该可能接受第三个param,这是一个成功调用的回调函数。我不会亲自使用它。它会限制你第一次遇到边缘情况。 – mkaatman