如何计算或检查返回功能的长度
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 b = data.length;
});
}
我希望我的变量b是全局变量,所以我可以获取长度
答案 0 :(得分:2)
您无法从异步调用返回值。相反,您可以使用回调来了解异步调用何时完成。在您的示例中:
leavereminder(function(length) {
console.log(length); // This will get you your data length immediately after JSON call is completed.
});
function leavereminder(callBack) {
$.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);
}
}
// Instead of this : var b = data.length;
callBack(data.length); // This will send the length back(alternate for return)
});
}
使用全局变量的问题是你永远不知道调用何时完成(除非你添加一个观察者,但为什么不保持简单?)
答案 1 :(得分:1)
不清楚你的意思是&#34;检查返回功能的长度,&#34;但我认为你的意思是检查b
的价值。在这种情况下,只需在回调之外声明b
,如下所示:
var b = 0;
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);
}
}
b = data.length;
});
}
P.S。您应该使用比b
更具描述性的变量名称 - 此名称很难调试,并且可能与页面上的其他脚本冲突。
答案 2 :(得分:1)
如果您希望b
是全局的,那么您需要在函数外部初始化它。然后b
可以访问leavereminder()
。
var b;
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);
}
}
b = data.length;
});
}
答案 3 :(得分:0)
使用jquery将其写入隐藏的html输入字段,稍后再使用。
在你的ajax电话中:
$('#count_var').val(data.length);
你的html收集点数:
<input type="hidden" name="count_var" id="count_var" />