Javascript Ajax将数组保存到全局变量不起作用保持未定义
试图将从ajax检索到的数组保存到全局变量中,以便稍后使用它,但仍会出现未定义的错误Javascript Ajax将数组保存到全局变量不起作用保持未定义,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,试图将从ajax检索到的数组保存到全局变量中,以便稍后使用它,但仍会出现未定义的错误 <script> var items = []; function add(value){ items.push(value); } $(document).ready( function() { $.ajax({ type: 'POST', url: 'xxxx.php', dataT
<script>
var items = [];
function add(value){
items.push(value);
}
$(document).ready( function() {
$.ajax({
type: 'POST',
url: 'xxxx.php',
dataType: 'json',
cache: false,
success: function(result) {
for(i=0; i < result.length; i++){
add(result[i]);
}
},
});
});
document.write(items[1])
</script>
var项目=[];
功能添加(值){
项目。推送(价值);
}
$(文档).ready(函数(){
$.ajax({
键入:“POST”,
url:'xxxx.php',
数据类型:“json”,
cache:false,
成功:功能(结果){
对于(i=0;i
这是一个异步AJAX调用。对add
的调用将在执行document.write(项目[1])之后完成代码>
因此,这是正确的方法:
<script>
var items = [];
function add(value){
items.push(value);
}
$(document).ready( function() {
$.ajax({
type: 'POST',
url: 'xxxx.php',
dataType: 'json',
cache: false,
success: function(result) {
for(i=0; i < result.length; i++){
add(result[i]);
}
document.write(items[1])
},
});
});
</script>
var项目=[];
功能添加(值){
项目。推送(价值);
}
$(文档).ready(函数(){
$.ajax({
键入:“POST”,
url:'xxxx.php',
数据类型:“json”,
cache:false,
成功:功能(结果){
对于(i=0;i
这样,使用结果的函数将在执行结果函数时执行
这样想:你说:这是柠檬篮。然后你让某人去某个地方拿柠檬,在他回来之前,你试着数一数柠檬。明白了吗?您可以在ajax请求完成后使用ajaxstop调用该方法。将以下功能放在document ready中:
$(document).ajaxStop(function () {
document.write(items[1]);
});
上面的解决方案是可行的,但这是我在等待多个ajax函数完成时使用的另一个选项。每次完成ajax请求时都会调用此函数,但如果需要,可以将调用限制为一次。哪一行返回错误?document.write(items[1])是在document.write(items[1])时吐出unfinedto显式的调用了code>,items[1]
仍然是未定义的
,因为items
是一个空数组。我明白了,但我希望能够在外部使用它,并将该变量存储到全局变量中。我知道如果我把它放在里面会有用,但这不是我想要的。它会被储存在外面。for循环正确地填充项。只是现在还没有。但是一旦ajax返回,它就会返回。您正在调用items[1],您确定数组中添加了2个或更多的项吗?如果添加了1个或更少的项,它将始终是未定义的。1作为一个示例,其他项可用。限制为一个调用的方法是什么?我创建了一个进行ajax调用的函数,并包含此代码$(document)。one('ajaxStop',function(){yourfunction();});它给了我想要的值,但我遇到的问题是,它会导致html中的所有其他内容消失,并且只显示该值。使用innerHTML会更好吗?4.5当前平均值:document.getElementById(“demo”).innerHTML=$(document.ajaxStop(函数(){document.write(项[1]);});如果您只是尝试将项[1]的结果添加到演示中,则不需要document.write。只需在ajaxstop函数中分配它。yourelement.innerHTML=项目[1]。