【发布时间】:2016-05-15 01:19:17
【问题描述】:
不幸的是,我在 SO 上解决了这个问题的许多解决方案,但没有一个对我有用。
我想在我的页面上动态加载和放置一些元素。 HTML 由其中一个脚本生成,生成的模板(用于向其中注入数据)传递给 getJSON 方法。我想在我的回调方法中填充该模板,然后将其添加到正文中。
问题在于 getJSON 函数。我试图通过闭包和绑定传递面板值,但它们都不起作用。
init: function(panel) {
// closure
$.getJSON("scripts/getZones.php",
(function () { // closure
var p = panel;
return function(zoneData) {
if (zoneData.status == true) {
$.each(zoneData.values, function(i, item) {
console.log("Module.Control_manual: Adding zone " + item.id);
// filling panel with data here - but panel is undefined
});
} else {
// error!
console.log("Module.Control_manual: Error: " + item['message']);
}
}
})
);
}
我的代码有什么问题?谢谢!
【问题讨论】:
-
除此之外,您不会立即调用
(function () { // closure .... })函数。您的代码没有显示在您的function(zoneData)中尝试使用panel或p的任何部分。 -
您需要提供一个工作代码,至少是一个更完整的代码,以便人们可以重现您的问题,没有这个,您将让我们猜测,我们没有人可以给您正确的答案
-
你为什么在 ajax 请求中使用自调用函数?
-
除此之外
zoneData将是您当前代码中的问题:如果panel在您的代码中的那个位置是undefined,那么它或者在您的$.getJSON("scripts/getZones.php",之前已经是undefined并且调用init或在init函数中的某处将其设置为undefined时,您做错了。所以首先检查一下console.dir(panel);会在这里显示什么:init: function(panel) { console.dir(panel);
标签: javascript jquery json closures