我正在编写一些javascript代码,首先从数据库中检索一些数据(函数$ .get()),然后对数据执行一些计算 - 使用带有静态属性的CalcModule()将数据传递给函数测试()。通过控制台我看到静态属性(productname,productid)被设置(在$ .get()内),但是通过控制台我也看到这些值仍然无法访问(可见)函数Test()?? < / p>
我做错了什么? (我查了一些关于静态属性的网站,如http://elegantcode.com/2011/01/19/basic-javascript-part-7-static-properties-and-methods/,但我仍然无法解决问题)
代码:
$(document).ready(function () {
function CalcModule() {};
//static variables
CalcModule.nrofeproducts;
CalcModule.productid = [];
CalcModule.productname = [];
//get the product data from the database
$.get("getdata.php",
function (msg) {
//some code here...
//load CalcModule with retrieved db values for calculation
for (var i = 0; i < msg.nrofeproducts; i++) {
CalcModule.productid[i] = msg.productid[i];
CalcModule.productname[i] = msg.productname[i];
}
//for debugging purposes
console.log(CalcModule.productname);
console.log(CalcModule.productid);
}, "json"); //$.get()
function Test() {
var x = [];
x = CalcModule.productname;
console.log(CalcModule.productname);
}
Test();
})
答案 0 :(得分:0)
$.get("getdata.php",
function (msg) {
//some code here...
//load CalcModule with retrieved db values for calculation
for (var i = 0; i < msg.nrofeproducts; i++) {
CalcModule.productid[i] = msg.productid[i];
CalcModule.productname[i] = msg.productname[i];
}
//for debugging purposes
console.log(CalcModule.productname);
console.log(CalcModule.productid);
// We are guaranteed that $.get is done
Test();
}, "json"); //$.get()
function Test() {
var x = [];
x = CalcModule.productname;
console.log(CalcModule.productname);
}
// If we call Test() here, $.get will not be done yet.