我需要从文件中加载一些价格(服务器没有设置数据库):
PriceChicken:2.16
PriceRibs:1.84
PriceBrisket:14.00
PricePulledPork:12.00
PriceSides:5.00
这样的javascript块:
var price = {
"PriceChicken": "1",
"PriceRibs": "1",
"PriceBrisket": "1",
"PricePulledPork": "1",
"PriceSides": "1"
};
function loadVars(){
console.log(price["PriceChicken"]);
$.get("price.txt", function(data){
dataarray = data.split("\n");
for(i = 0;i < dataarray.length; i++){
var line = dataarray[i].split(":");
console.log(price[line[0]]);
price[line[0]] = line[1];
console.log(price[line[0]]);
}
});
console.log(price["PriceChicken"]);
}
loadVars();
不幸的是,$ .get部分内部的功能似乎无法看到全局价格变量 所以对于它显示的第一个项目:1,未声明,2.16,然后当它离开$ .get函数时再次为1。 有没有更好的方法来使全局变量起作用,或者更好的方法来获取这些信息?
编辑:我很蠢,并没有检查我的所有变量。作为我的忏悔,我将以正确的方式去做,并学会使用JSON。
答案 0 :(得分:3)
$.get
调用是异步的。您将其视为同步呼叫。
在处理文件之前调用行console.log(price["PriceChicken"]);
。
最好使用JSON格式。
<强> prices.json 强>
{
"PriceChicken" : 2.16,
"PriceRibs" : 1.84,
"PriceBrisket" : 14.00,
"PricePulledPork" : 12.00,
"PriceSides" : 5.00
}
<强>的JavaScript 强>
var price = {};
$.getJSON("prices.json", function(data){
$.extend(price,data);
});
答案 1 :(得分:0)
var price = {
"PriceChicken": "1",
"PriceRibs": "1",
"PriceBrisket": "1",
"PricePulledPork": "1",
"PriceSides": "1"
};
function set_price(key, value){
price[key] = value;
};
function loadVars(){
console.log(price["PriceChicken"]);
$.get("price.txt", function(data){
dataarray = data.split("\n");
for(i = 0;i < dataarray.length; i++){
var line = dataarray[i].split(":");
// set price
set_price(line[0], line[1]);
console.log(price[line[0]]);
}
});
console.log(price["PriceChicken"]);
}
loadVars();