我有一个在画布上写文本的脚本。它工作得很好。问题是,如果我进行Ajax调用,首先获取字符串,然后将字符串写入画布,JavaScript似乎忽略了我想要完成的顺序,并在Ajax调用之前写入字符串;结果是脚本打印到画布“未定义”。
psuedocode:
//var str = ~some_ajax_call... <---If I use this, the output is undefined.
var str = "hello world";
context.fillStyle = '#00f';
context.font = 'italic 30px sans-serif';
context.textBaseline = 'top';
context.fillText (str, 0, 0);发布于 2011-05-28 08:51:32
Ajax是assync,所以ajax调用下面的代码在服务器响应之前运行。您只需要在收到HTTP响应时运行代码。
对于jQuery,应该是这样的:
$.ajax({
url: "sample.php",
success: function(d) {
context.fillStyle = '#00f';
context.font = 'italic 30px sans-serif';
context.textBaseline = 'top';
context.fillText (d, 0, 0);
});发布于 2011-05-28 08:50:10
由于ajax调用是异步的,因此必须将打印逻辑放在ajax操作的success回调中。
例如:
var str = "hello world";
$.ajax({
url: '/echo/json/',
success: function(data){
var context = document.getElementById('c').getContext('2d');
context.fillStyle = '#00f';
context.font = 'italic 30px sans-serif';
context.textBaseline = 'top';
context.fillText (str, 0, 0);
}
});http://jsfiddle.net/BhENZ/
https://stackoverflow.com/questions/6158949
复制相似问题