无法访问范围内的Javascript变量
Not able to access Javascript variable which is in Scope..?
下面是我的javascript代码。我在函数外声明变量"allproductsAndPrice"。但是我无法访问它后,我初始化它。我做错什么了吗?当我试着提醒它时,它没有打印任何东西。
var allproductsAndPrice = "";
$.getJSON("/Home/GetProducts",
function (data, textStatus, jqXHR) {
for (var i = 0; i < data.length; i++) {
allproductsAndPrice = allproductsAndPrice +
"<option name='productName' id=" + data[i].productPrice + ">" +
data[i].Pname + "</option>";
}
}
);
alert(allproductsAndPrice);
这里的问题是警报将在getJSON
的回调被调用之前被调用。这意味着allProductsAndPrice
在警报中始终是一个空字符串。
对getJSON
的调用是异步的,这意味着它将触发ajax请求的"完成"事件,然后回调将被执行。你可以使getJSON调用同步,但这有点违背思想。
要更好地了解正在发生的事情,可以这样做:
- 将
allproductsAndPrice
初始化为当前作用域上的" 创建Ajax请求 -
allproductsAndPrice
的内容仍然是" - 完整事件被触发
- 执行回调并影响
allproductsAndPrice
你应该这样做:
var allproductsAndPrice = "";
$.getJSON("/Home/GetProducts",
function (data, textStatus, jqXHR) {
for (var i = 0; i < data.length; i++) {
allproductsAndPrice = allproductsAndPrice + "<option name='productName' id=" + data[i].productPrice + ">" + data[i].Pname + "</option>";
}
// More code that should be executed
alert(allproductsAndPrice);
});
试试这个。这将有效并帮助您确定是否存在错误。第二件事var allproductsAndPrice将保持空警报,因为ajax请求是异步的,javascript将不会等待ajax响应。
var allproductsAndPrice = "";
try {
$.getJSON("/Home/GetProducts", function(data) {
for (var i = 0; i < data.length; i++) {
allproductsAndPrice = allproductsAndPrice + "<option name='productName' id=" + data[i].productPrice + ">" + data[i].Pname + "</option>";
}
});
} catch (e) {
alert(e.message);
}
alert(allproductsAndPrice);
相关文章:
- 将函数的上下文应用于javascript变量
- 如何通过ajax刷新JSF填充的javascript变量
- Javascript变量赋值|
- 限制javascript变量的最小/最大整数
- 来自文本输入null的html javascript变量
- 访问jsrender模板中的全局javascript变量并更新它
- 从数据库中获取数据并插入JavaScript变量
- 如何将javascript变量传递到Meteor Spacebars模板中
- 将JavaScript变量保存到Rails模型
- 在if语句下的html中使用javascript变量
- Javascript变量分配-按类别
- 操作javascript变量[HTML]以只显示文本
- 无法比较javascript变量
- 如何将smarty变量与javascript变量进行比较
- 如何使用PHP将javascript变量添加到mysql数据库中
- Javascript 变量使用 jquery 查找变量
- 重新加载页面时Javascript变量发生变化
- 在asp classic中使用javascript变量
- 全局Javascript变量变为null
- 如何向服务器端提交javascript变量