Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.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/5/reporting-services/3.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_Ajax - Fatal编程技术网

Javascript 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

试图将从ajax检索到的数组保存到全局变量中,以便稍后使用它,但仍会出现未定义的错误

   <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显式的
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]。