Jquery JSON数组与脚本一起使用

Jquery JSON数组与脚本一起使用,jquery,arrays,Jquery,Arrays,我很难在ajax请求之外访问阵列数据 这是我得到的代码: test.php包含: echo json_encode($staffID); JQuery是: var id = []; $.ajax({ type: "POST", cache: false, dataType: 'json', url: "test.php", success: function(data) { id = data; console.log (id) //SHOWS

我很难在ajax请求之外访问阵列数据

这是我得到的代码:

test.php包含:

echo json_encode($staffID);
JQuery是:

var id = [];
$.ajax({
    type: "POST", cache: false, dataType: 'json',
    url: "test.php",    
    success: function(data) {
    id = data;
    console.log (id)  //SHOWS ARRAY VALUES
    }
});

console.log (id)  //DOESN'T SHOW ANYTHING
ajax请求中的控制台日志输出显示:

["1234", "2468", "3579", "0864"]
我的目标是运行几个ajax请求并返回总共两个不同的数组。一旦我可以访问ajax结果之外的数组数据,我就可以检查返回的数组数据中是否有其他值

如何在ajax请求之外访问数组
id

编辑: 我尝试使用以下方法:

function foo(callback) {

    $.ajax({
        url: '...',
        success: function(response) {
           return callback(null, response);
        }
    });
}

var result = foo(function(err, result){
          if (!err)
           console.log(result);    
}); 
console.log(结果)
返回正确的结果,但是否有任何方法可以将其作为脚本中其他位置的数组访问


谢谢

您看不到数据是正常的。$。ajax函数异步发送请求。因此,您的代码如下所示:

  • 调用$.ajax函数
  • 调用console.log
  • Ajax获得响应和调用成功函数
  • 很简单,$.ajax在等待响应时不会阻止代码的进一步执行。如果不阻止,则必须将
    async
    $。ajax参数设置为
    false

    var id = [];
    $.ajax({
        type: "POST", cache: false, dataType: 'json',
        url: "test.php",    
        async: false,
        success: function(data) {
            id = data;
            console.log (id)  //SHOWS ARRAY VALUES
        }
    });
    
    console.log (id);
    
    但此参数会停止浏览器工作,直到没有响应为止


    最后,您应该在success函数中操作HTML、数据或其他任何内容。这是最好的方法。

    Hi的可能副本。不知道这是怎么复制的。我可以在success函数中获得结果。我很难在ajax请求之外以数组的形式访问它,这是完全相同的问题。阅读已接受的答案以了解发生了什么。基本上,您的最后一行是在您从AJAX调用中得到响应之前运行的,因此您必须从回调中执行您的逻辑。另外,请遵循已接受回答顶部的链接感谢您在这方面的耐心。。我现在明白你的意思了。。但我仍然没有得到我所期望的结果。我会更新我的问题。