jQuery 函数中的全局变量



我需要从文件中加载一些价格(服务器没有设置数据库):

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。

$.get调用是异步的。您将其视为同步调用。

处理文件之前调用行console.log(price["PriceChicken"]);

最好使用 JSON 格式。

价格.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); 
});
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();

相关内容

  • 没有找到相关文章

最新更新