繁体   English   中英

将JSON解析值传递给全局变量

[英]Passing JSON parse value to a global variable

$(function() {

        var global_datalength = 0;
        leavereminder();
        alert(global_datalength);

    });


function leavereminder() {
        $.getJSON("<?=base_url()?>home/leavereminder",
            {},
            function(data) {
                if(data.length != 0) {
                    for(x=0; x<data.length; x++) {
                        var lblm = document.createElement('div');        
                        lblm.innerHTML = '<label>'+data[x]+'</label>';  
                        lblm.className = 'alert alert-info';                  
                        document.getElementById('notifbody').appendChild(lblm);           
                    }
                }
                var datalength = data.length;
        });
        global_datalength = datalength;
    }

我有一个global_datalength全局变量,我想用返回的json替换它,但是当我警告我的代码时,它始终为0。它没有传递我的global_datalength = datalength。 因为当在json函数之外时,我的data.length是未知的

删除global_datalength上的var关键字以使其变为全局。

您还可以使用window.global_datalength

另一种方法是在jQuery ready函数外部声明变量。


您的JSON调用是异步的。 这意味着将在从服务器返回JSON之前调用警报。

您可以做的是:

function leavereminder() {
    $.ajax({
        dataType: "json",
        url: "<?=base_url()?>home/leavereminder",
        async: false,
        success: function(data) {
            if(data.length != 0) {
                for(x=0; x<data.length; x++) {
                    var lblm = document.createElement('div');        
                    lblm.innerHTML = '<label>'+data[x]+'</label>';  
                    lblm.className = 'alert alert-info';                  
                    document.getElementById('notifbody').appendChild(lblm);           
                }
            }
            global_datalength = datalength;
        },
    });
}

需要将global_datalength保留在jQuery函数之外。

另外,由于leavereminder是异步的,因此您可能需要保持global_datalength = datalength; function(data)内部function(data)

var global_datalength = 0;

 $(function () {
     leavereminder();
 });

 function leavereminder() {
     $.getJSON("<?=base_url()?>home/leavereminder", {},

     function (data) {
         if (data.length != 0) {
             for (x = 0; x < data.length; x++) {
                 var lblm = document.createElement('div');
                 lblm.innerHTML = '<label>' + data[x] + '</label>';
                 lblm.className = 'alert alert-info';
                 document.getElementById('notifbody').appendChild(lblm);
             }
         }
         global_datalength = data.length;
         alert(global_datalength);
     });

 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM