Javascript 为什么';数组中是否会填充ajax repsonse?
下面是我在HTML文件中包含的JavaScript文件中的代码。 当I console.log msg时,我可以看到数组中有100个项目(参见屏幕截图),但是在最后一个console.log(dataArray)之后,dataArray仍然为空 我没有收到任何错误或类似的东西,所以我很难调试它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
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)
在调用AJAX请求的成功处理程序之前执行控制台.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
设置为referencemsg
,并抛出初始数组。您没有设置实际的元素数组的nts。代码部分似乎正常。它正在执行创建它的目的。实际上,loadPosts()
函数除了使用ajax调用获取数据外,什么都不做。您没有在该函数中返回dataArray
。没有出于任何目的使用dataArray
。arrayList的可能副本有嵌套的arrayList。您必须对其进行排序以获得实际数组,请将此dataArray=msg;
更改为数据Array=msg.d;
try async:false。您正在将dataArray
设置为referencemsg
,初始数组将被抛出。您没有将数组的实际元素设置为任何值。代码部分似乎没有问题。它正在执行创建它的目的。实际上,loadPosts()
函数除了使用ajax调用获取数据外,什么都不做。您没有在该函数中返回dataArray
。没有出于任何目的使用dataArray
。哦,您得到了它。+1oh您得到了它。+1