![](/img/trans.png)
[英]Can an HTML <select> element have a default selectedIndex of -1 without running page-wide javascript?
[英]Can't access page-wide javascript variable
我正在获取JSON响应,并且使用该响应,我有两个值:
我想将这两个值保存在客户端的某个位置,以便当用户选择一个单选按钮或另一个单选按钮时,将该值添加到页面上的另一个元素。
这是我在做什么:
<script type="text/javascript">
$(document).ready(function () {
var landCost;
var airCost;
$("#ddlCiudad").change(function () {
var idCity = $("#ddlCiudad").val();
$.getJSON("/ProductCheckout/GetPriceForLocation", { cityId: idCity, productId: idProduct, type: "land" },
function (cityData) {
console.log("Recieved json data."); //This part works. It outputs.
var data = $.parseJSON(cityData);
console.log("Parse JSON response."); //This part works. It outputs.
landCost = data.LandCost;
console.log("Assigned value of LandCost"); //FAILS HERE. nothing is shown. not even an error.
airCost = data.AirCost;
console.log("Assigned value of AirCost");
alert(landCost);
console.log("Alerted land!");
alert(airCost);
console.log("Alerted air!");
}
);
});
所以你有什么建议? 我需要该JSON响应的值可在该页面上使用,如果我在change()事件中声明该变量,它将超出范围。
{"DaysToShip":" TER = 48 Hrs / AER = 24 Hrs","LandCost":"25,00","AirCost":""}
尝试
landCost = cityData.LandCost;
如果确实必须使用全局变量,则可以将它们直接附加到window对象。
window.airCost = cityData.AirCost;
确实,尽管您希望在同一个作用域中处理json请求和“单选按钮”,所以您根本不会污染全局名称空间。
您对$.parseJSON()
调用返回null
因为传递给回调的数据已经解析为JSON。
var json = {LandCost:3, AirCost:5},
results = $.parseJSON(json);
console.log(results); // results == null
如果要全局声明变量,则可以将它们放在jQuery闭包之外( $(document).ready(function () {...});
),或者不要使用var
声明它们。 如果您不使用var
关键字,则该变量将默认为全局变量。
这是不使用var
关键字即可设置全局变量的jsfiddle: http : //jsfiddle.net/jasper/JWtbV/
您是否考虑过使用jQuery的$ .data()函数将值直接附加到DOM中的body元素并从中访问它?
// Set Values
$('body').data('landCost', data.LandCost);
$('body').data('airCost', data.AirCost);
// Retrieve Values //
console.log($('body').data('landCost');
console.log($('body').data('airCost');
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.