javascript - 无法将 json 数据传递给 Ajax 函数

标签 javascript jquery json ajax

基于下面的代码,我想了解为什么当我从ajax函数调用它时无法从json(json.projects[i].projName)调用数据?

var json = JSON.parse(data);

for (var i = 0; i < json.projects.length; i++) {  

alert(json.projects[i].projName); //will show correct data

    $.ajax({ url: epridlist, method: 'GET'}).then(function (datas) {
        alert(json.projects[i].projName) // this will fail. says not know projName, when projName existed in jason data
    });
}

请帮我理解一下。如果我在ajax函数之外发出警报,结果将显示

最佳答案

这是因为关闭。 Ajax 成功回调中的内部函数创建一个闭包并捕获变量 i 的值。内部函数包含对 i 变量的引用。

循环执行后,i 的值将是 json.projects.length 并且当您尝试访问 json.projects[json.projects .length] 你会得到undefined

要解决您的问题,您可以尝试使用 let 变量而不是 var,与函数作用域相比,它的作用域更短。

您可以引用本问题的其他做法:JavaScript closure inside loops – simple practical example

var json = JSON.parse(数据);

for (let i = 0; i < json.projects.length; i++) {  

alert(json.projects[i].projName); //will show correct data

    $.ajax({ url: epridlist, method: 'GET'}).then(function (datas) {
        alert(json.projects[i].projName) // this will fail. says not know projName, when projName existed in jason data
    });
}

关于javascript - 无法将 json 数据传递给 Ajax 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41835949/

相关文章:

javascript - jQuery 替代 Div 元素

javascript - 无法从 Javascript addEventListener 方法调用 jQuery POST 请求

javascript - 枚举返回的 api 数据的索引

json - 根据值中的特定元素对键进行排序

javascript - react native 。应用程序的关闭事件

php - 刚下载的jwplayer,跟着setup,没有出现

javascript - 在登录页面重定向之前防止主页闪烁

javascript - 有没有办法使用 DataTable 将表的列放入 div 中?

jquery - 如何在Grails上使用jQuery脚本?

c# - 从文件 UWP (C#) 中读取 JSON