我正在尝试解决将值从表单传递到 javascript 时遇到的问题。
这是代码。python 脚本可以无缝工作,并且每次都会给表单值返回一个字符串。
<head>
<title>Line Chart</title>
<script>
function clickme() {
putgraph();
}
</script>
<script>
function alertbox() {
alert(ajaxResponse);
}
</script>
<script src="Chart.js"></script>
<script src="jquery.js"></script>
<script>
function drawgraph(z) {
var v = document.getElementById("frmvar");
v.value = z;
return draw();
};
function draw() {
var ajaxResponse=null;
$.ajax({
url: "/currentcost.py",
data: $("form[name='frm']").serialize(),
success: function(response){
ajaxResponse=response;
}, async: false
});
return ajaxResponse;
}
</script>
<script>
function putgraph()
{
tg=drawgraph("t");
alert(tg);
var lineChartData = {
labels : ["January","February","March","April","May","June","July"],
datasets : [
{
fillColor : "rgba(220,220,220,0.5)",
strokeColor : "rgba(220,220,220,1)",
pointColor : "rgba(220,220,220,1)",
pointStrokeColor : "#fff",
data : [tg]
// data : [65,59,90,81,56,55,40]
},
]
}
var myLine = new Chart(document.getElementById("canvas").getContext("2d")).Line(lineChartData);
}
</script>
<meta name = "viewport" content = "initial-scale = 1, user-scalable = no">
<style>
canvas{
}
</style>
</head>
这是发生的事情:
当用户完成表单后,他们单击提交表单的按钮——运行clickme
顶部的功能。那putgraph
就是我认为它出错的地方。
putgraph
显示中的警报窗口"undefined"
向我建议该putgraph
函数在drawgraph
完成之前启动,尽管所有 AJAX 回调的东西都已到位,并且在我将它们放在一起之前工作!
我知道 Javascript 是异步的,但我认为drawgraph
anddraw
函数通过使用回调处理程序已经“克服”了这个问题。
真的很感激有人关注我做错了什么,最好还是建议纠正它的方法。
更新:
感谢所有回答的人。我用我使用的答案编辑了上面的脚本。我发现 async 关键字真的很有用,因为它消除了所有混乱的回调过程。HTH 是其他人 :-)