命题是这样的:通过AJAX访问后台数据,后台返回数据之后,将数据传给图表参数,实现动态绘图。
代码是这样的:
前台JS
$(document).ready(function() {
//chart为画图函数,var1为参数。
returnPara();
chart(var1,var2,var3);
});
function returnPara(){
//ajax前台代码
...
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
var1 = xmlHttp.responseText;
}
}
异想天开的认为在程序启动的时候调用returnPara()函数,然后启动Ajax程序,就能够将后台参数传递给画图函数了。
结果问题是:程序正常能够跑通,网页也能打开,但是图表中本该有内容的var1参数值为0,很明显是因为var1没有赋值。
很头痛的找了很多原因,结果还是没有发生变化,就在快要绝望的时候,发现了问题。
解决方法:
原程序中,启动ajax程序之后,后台数据还没有返回的时候,程序就继续执行了chart()函数,造成了参数无法赋值。改进方法是
将chart()函数放在判断ajax是否返回结果的if语句中,如果返回结果了再继续执行。
改进的程序:
$(document).ready(function() {
//chart为画图函数,var1为参数。
//这里省略了ajax连接配置的代码
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
var1 = xmlHttp.responseText;
chart(var1,var2,var3);
}
});
改进后的程序能够正确的执行。
小结:问题虽小,查起来还是挺费劲的。很多代码的问题不是语法问题,而需要从根本上理解框架的实现原理。