Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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 repsonse?_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 为什么';数组中是否会填充ajax repsonse?

Javascript 为什么';数组中是否会填充ajax repsonse?,javascript,jquery,ajax,Javascript,Jquery,Ajax,下面是我在HTML文件中包含的JavaScript文件中的代码。 当I console.log msg时,我可以看到数组中有100个项目(参见屏幕截图),但是在最后一个console.log(dataArray)之后,dataArray仍然为空 我没有收到任何错误或类似的东西,所以我很难调试它 function loadPosts() { var dataArray = new Array(); var root = 'https://jsonplaceholder.typicode.c

下面是我在HTML文件中包含的JavaScript文件中的代码。 当I console.log msg时,我可以看到数组中有100个项目(参见屏幕截图),但是在最后一个console.log(dataArray)之后,dataArray仍然为空

我没有收到任何错误或类似的东西,所以我很难调试它

function loadPosts() {
  var dataArray = new Array();
  var root = 'https://jsonplaceholder.typicode.com';
  $.ajax({
    url: root + '/posts/',
    method: 'GET',
    success:function(msg){
      dataArray = msg;
    }
  });

  console.log(dataArray);
} 

window.onload = loadPosts;

在调用AJAX请求的成功处理程序之前执行您的
控制台.log
,否则它看起来是正确的。分配
dataArray=msg后,可以添加
console.log(dataArray)
控制台.log
,否则它看起来是正确的。分配
dataArray=msg后,可以添加
console.log(dataArray)
以查看它。

在ajax调用完成之前执行console.log。所以发出异步请求

 function loadPosts() {
  var dataArray = new Array();
  var root = 'https://jsonplaceholder.typicode.com';
  $.ajax({
    url: root + '/posts/',
    method: 'GET',
    async:false,// <--
    success:function(msg){
      dataArray = msg;
    }
  });
   console.log(dataArray);
} window.onload = loadPosts;
函数loadPosts(){
var dataArray=新数组();
变量根https://jsonplaceholder.typicode.com';
$.ajax({
url:root+/posts/,
方法:“GET”,

async:false,//console.log在ajax调用完成之前执行。所以发出异步请求

 function loadPosts() {
  var dataArray = new Array();
  var root = 'https://jsonplaceholder.typicode.com';
  $.ajax({
    url: root + '/posts/',
    method: 'GET',
    async:false,// <--
    success:function(msg){
      dataArray = msg;
    }
  });
   console.log(dataArray);
} window.onload = loadPosts;
函数loadPosts(){
var dataArray=新数组();
变量根https://jsonplaceholder.typicode.com';
$.ajax({
url:root+/posts/,
方法:“GET”,

async:false,//AJAX本质上是异步的,因此您正在执行:

  • Ajax调用
  • console.log(数据数组)
  • 成功回调
  • 要获得所需的输出,应将控制台日志移动到成功处理程序中:

    function loadPosts() {
        var dataArray = new Array();
        var root = 'https://jsonplaceholder.typicode.com';
        $.ajax({
          url: root + '/posts/',
          method: 'GET',
          success:function(msg){
            dataArray = msg;
            // act on data array
            console.log(dataArray);
          }
        });
    } 
    
    我还建议将成功/错误回调改为
    承诺
    ,因为从jQuery 3开始,回调已被弃用并删除。这将更改您的代码,如下所示:

    function loadPosts() {
        var root = 'https://jsonplaceholder.typicode.com';
        return $.ajax({
          url: root + '/posts/',
          method: 'GET'
        });
    }
    
    loadPosts().then(function(data) {
        // resolve promise handler
        // do something with your data
        console.log(data);
    }, function(err) { 
        // rejected promise handler (failure)
        console.error(data);
    });
    
    有关更多信息:


    AJAX本质上是异步的,因此您正在执行:

  • Ajax调用
  • console.log(数据数组)
  • 成功回调
  • 要获得所需的输出,应将控制台日志移动到成功处理程序中:

    function loadPosts() {
        var dataArray = new Array();
        var root = 'https://jsonplaceholder.typicode.com';
        $.ajax({
          url: root + '/posts/',
          method: 'GET',
          success:function(msg){
            dataArray = msg;
            // act on data array
            console.log(dataArray);
          }
        });
    } 
    
    我还建议将成功/错误回调改为
    承诺
    ,因为从jQuery 3开始,回调已被弃用并删除。这将更改您的代码,如下所示:

    function loadPosts() {
        var root = 'https://jsonplaceholder.typicode.com';
        return $.ajax({
          url: root + '/posts/',
          method: 'GET'
        });
    }
    
    loadPosts().then(function(data) {
        // resolve promise handler
        // do something with your data
        console.log(data);
    }, function(err) { 
        // rejected promise handler (failure)
        console.error(data);
    });
    
    有关更多信息:


    检查以下代码:

    函数loadPosts(){
    var dataArray=[];
    变量根https://jsonplaceholder.typicode.com';
    $.ajax({
    url:root+/posts/,
    方法:“GET”,
    成功:功能(msg){
    console.log('First');
    dataArray=msg;
    }
    });
    console.log('Second');
    log(数据数组);
    } 
    window.onload=loadPosts;

    检查以下代码:

    函数loadPosts(){
    var dataArray=[];
    变量根https://jsonplaceholder.typicode.com';
    $.ajax({
    url:root+/posts/,
    方法:“GET”,
    成功:功能(msg){
    console.log('First');
    dataArray=msg;
    }
    });
    console.log('Second');
    log(数据数组);
    } 
    window.onload=loadPosts;

    您的arrayList的可能副本具有嵌套的arrayList。您必须对其进行排序以获得实际数组,将此
    dataArray=msg;
    更改为
    dataArray=msg.d;
    尝试异步:false。您正在将
    dataArray
    设置为reference
    msg
    ,并抛出初始数组。您没有设置实际的元素数组的nts。代码部分似乎正常。它正在执行创建它的目的。实际上,
    loadPosts()
    函数除了使用ajax调用获取数据外,什么都不做。您没有在该函数中返回
    dataArray
    。没有出于任何目的使用
    dataArray
    。arrayList的可能副本有嵌套的arrayList。您必须对其进行排序以获得实际数组,请将此
    dataArray=msg;
    更改为
    数据Array=msg.d;
    try async:false。您正在将
    dataArray
    设置为reference
    msg
    ,初始数组将被抛出。您没有将数组的实际元素设置为任何值。代码部分似乎没有问题。它正在执行创建它的目的。实际上,
    loadPosts()
    函数除了使用ajax调用获取数据外,什么都不做。您没有在该函数中返回
    dataArray
    。没有出于任何目的使用
    dataArray
    。哦,您得到了它。+1oh您得到了它。+1