javascript - jquery的ajax调用中未定义的变量
问题描述
我有一个相对简单的代码,我在一个循环中找到事件侦听器,但是在映射结果时循环变量不可用。
for (let index = 0; index < 2; ++index) {
$("#id" + index).on("keyup", function () {
$.ajax({
type: "GET",
url: "https://some-url.com",
dataType: "json",
success: function (data) {
$('#div' + index).append(
$.map(data, function (myData, index) {
return '<a href="#" onclick="selectId(index, myData.id);"> Click me </a>'
}).join());
}
}
);
});
}
结果是:
Uncaught ReferenceError: index is not defined
编辑:例如,如果我只使用 myData.id ,那么一切都像魅力一样工作有什么想法我在这里想念的吗?
解决方案
您正在使用嵌入式 JS 生成HTML字符串。JS 在插入文档之前不会被评估。这是一个不同的范围,没有index
或myData
变量。
而是生成一个 jQuery 对象。如果您不想在任何地方链接,请不要使用链接!
function (myData, index) {
const $button = $("<button />")
$button.text("Click me");
$button.on("click", () => selectId(index, myData.id));
return $button;
}
(并且不要join
将数组转换为字符串,只需附加 jQuery 元素数组)。
推荐阅读
- python - 在 JSONLint 上验证 AWS json 响应
- php - setcookie(来自手册的示例)未设置
- dart - 尝试记录某些内容后 Flutter 小部件库崩溃?
- php - 如何按行显示 MySQL 数据?
- javascript - 全局变量初始化问题 - JavaScript
- php - 如何获得嵌套类别的父母和父母的兄弟姐妹?
- wordpress - IFRAME:如何检查给定网站是否可以使用 iframe?
- javascript - jQuery - 显示具有多个触发器的多个 div
- algorithm - 在小于 o(n) 的时间内找到重复项相邻的数组中的非重复元素
- php - 当我单击 laravel 和 mongo db 中的分页时,过滤器不起作用