有人可以解释发生了什么在我的JavaScript函数
Can somebody explain whats happening in my JavaScript function?
所以我有一些ajax调用发生。第一个getJson返回一个json对象,我命名为"tables",它的结构为tables['tables'],列出了数据库中表的名称。Key1表示每个表名。所以我特意循环遍历每个表。我正在测试的东西出来,所以当表的名称是具体的"接口"(请参阅if语句),然后我想执行另一个ajax请求,从表本身检索数据。
这很奇怪,因为console.log(key1)确实吐出了如果key1 == " interfaces ",然而,我的第二个console.log(key1)没有吐出接口。它在"vlan"上吐出,这是我数据库中的最后一个表。
尽管如此,我的条目数组还是填充了来自接口的正确数据。
我不明白为什么一旦我进入我的第二个getJson语句,key1的val改变,特别是当这个函数甚至不应该访问时,key1不等于"接口"。
$.getJSON( "/ryan/nonEmber/getTables.php", function( data ) {
tables = data;
for (var key1 in tables['tables']) {
if (tables['tables'].hasOwnProperty(key1)) {
console.log(key1 + " -> " + tables['tables'][key1]);
if(key1 == 'Interfaces'){
console.log(key1);
$.getJSON("/ryan/nonEmber/getJson.php?table=" + key1, function( data2 ){
var items = [];
$.each(data2.post, function(key, val){
items.push(val);
});
console.log(key1);
for(i = 0; i < items.length; i++){
var myString = '<tr id = "visibleRow">';
for(j = 0; j < tables['tables'][key1].length; j++){
myString = myString + '<td id = "visibleDef">' + items[i][tables['tables'][key1][j]] +'</td>';
}
myString = myString + '</tr>';
Interfaces.push(myString);
}
});
}
}
}
});
你可能会发现我的问题出在ajax上。这可能是,但我写的ajax函数依赖于其他ajax函数在过去,他们已经正确地工作。实际上,我在这里展示的这个函数取代了另一个包含3个ajax调用的函数。我只是想缩短它。
谁能解释一下这里发生了什么?Ajax是异步的。
你的循环触发Ajax请求。
传递给getJSON
的函数是事件处理程序,当收到HTTP响应时运行。
在重复调用getJSON
的循环完成之前,没有接收到任何响应,此时值是最后一个。
参见如何在Javascript中生成带有循环的事件处理程序?对于周围的工作。
相关文章:
- 我的javascript for循环不起作用
- 如何将我的javascript库公开给其他客户端使用
- 可以Resharper在我的javascript函数声明中添加分号
- 为什么我的JavaScript堆栈排序函数不起作用
- 页面在我的javascript执行后重新加载,我不希望它这样做
- MVC正在忽略我的Javascript文件
- 为什么我的javascript程序没有将其转换为整数而不是字符串
- 为什么我的JavaScript在Safari上的严格模式下不能正常工作
- 我的javascript太慢了
- 由于某种原因,我的JavaScript函数无法工作
- 为什么我的javascript脚本在页面加载时运行,而不是使用onclick
- 我的Javascript代码出错
- 为什么我的javascript和jquery源文件始终不加载
- AJAX:为什么不是't我的javascript与内容一起加载
- 为什么不是't我的javascript向Project Euler返回正确答案's排名第一
- 为什么当我在带有锚点的页面之间移动时,Rails不重新加载我的javascript文件
- Num doenst在我的javascript中工作
- 在我的JavaScript模块中绑定一个点击事件
- 为什么我的JavaScript函数没有返回选中的数组值
- 使用Ajax将我的Javascript变量传递给PHP