Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX在调用后返回未定义的变量_Javascript_Php_Jquery_Json_Ajax - Fatal编程技术网

Javascript 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

我正在用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调用,并尝试对函数执行相同的操作,它将返回未定义的结果。实际上,在函数的返回中,它也返回未定义的,在

ajaxConn();

我做错了什么

控制台。将其记录在
中。完成
。您当前的console.log在ajax请求完成之前立即运行,并且该值尚未定义。

ajax是异步的。因此,即使您使用“=”符号,也不意味着您得到了一个结果。$。延迟器将帮助您避免这样做,您可以在未完成请求之前打印变量,这就是它未定义的原因。将console.log放入函数中,您将看到结果。若要返回值,只有一种方法,那个就是使ajax请求同步。但我不建议这样做。不管怎样,您的ajaxConn可能应该接受第三个参数,这是一个成功调用的回调函数。我不会亲自使用它。这将限制你第一次遇到边缘案例。