【发布时间】:2019-01-24 11:56:02
【问题描述】:
当我发现这个变量抛出错误时,我正在浏览一段代码。
function call(data) {
$.each(data, function(index, value) {
var ddlId = 'ddlCat' + data[index].docId;
var html = '<tr id="supp_doc_row_' + data[index].docId + '" class="cls-delete-dynamic_edit">';
var html2 = '';
var countDocOfsameCategory = parseInt(data[index].countt) - 1;
})
$.post('/someController/SomeAction/', {
requestType: 'GETDOC'
}, function(data1) {
$("#" + ddlId).empty();
$("#" + ddlId).append($('<option value= "Select"> Select Type</option>'));
})
}
现在的问题是我将这个 ddlId 变量视为全局变量。所以我使用了这个内部发布方法。但我在控制台中得到了这个。
Uncaught ReferenceError: ddlId is not defined
at Object.success (<anonymous>:1110:38) at u (jquery-3.3.1.min.js:2) at Object.fireWith [as resolveWith] (jquery-3.3.1.min.js:2) at k (jquery-3.3.1.min.js:2) at XMLHttpRequest.<anonymous> (jquery-3.3.1.min.js:2)
当我在控制台中调试它时,我发现在 $.each 调用中它具有价值,但在 $.post 中它已经消失了。
谁能告诉我这个全局变量是如何失去状态的?
【问题讨论】:
-
ddlId不是全局的。您在each()块中定义了它。现在更容易看到我编辑了您的问题,因此逻辑正确缩进。您还缺少一些),这将导致语法错误。 -
这甚至看起来都不像有效代码,有各种不匹配的括号和花括号。您确定这是您使用的实际代码吗?
-
@David 它不是整个代码,只是其中的一部分。我会编辑这个。
-
@RajanMishra:好吧,至少从语法上有效的代码开始。浏览器控制台会比我们更有效地告诉您语法错误。此外,如果您只使用
data中的最后一个值,那么为什么要使用.each()呢?只需获取最后一个值,直接使用即可。
标签: javascript jquery ajax var