$(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是未知的
答案 0 :(得分:0)
删除var
上的global_datalength
关键字,使其成为全局。
您也可以使用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;
},
});
}
答案 1 :(得分:0)
需要将global_datalength
保留在jQuery函数之外。
此外,由于leavereminder
是异步的,您可能希望将global_datalength = datalength;
保留在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);
});
}