我在这里有这个JavaScript:
$('#takePicturebtn').click(function()
{
var injectImage = function(id, url) {
var z = document.getElementById(id);
z.src=url;
};
injectImage("pic", $.getJSON('/picture'));
});
$.getJSON('/picture')
需要一些时间才能执行并返回图像链接。是否可以给出一些时间/延迟来执行然后继续进行该过程?
烧瓶功能:
@app.route("/picture")
def picture():
link = interact().ftpSession('/home/pi/AlarmwebNew/pictures/' + interact().grabPicture(), interact().grabPicture())
return jsonify(pictureLink=link)
答案 0 :(得分:2)
一种方便的方法是将injectImage
函数重新设计为接受(Promise)对象作为第二个参数而不是字符串。
var injectImage = function( id, promise ) {
$.when( promise ).done(function( url ) {
var z = document.getElementById(id);
z.src=url;
});
};
答案 1 :(得分:1)
您必须使用回调。试试这个:
$('#takePicturebtn').click(function()
{
$.getJSON('/picture', function(data)
{
var z = document.getElementById('pic');
z.src=data.pictureLink;
});
});
答案 2 :(得分:0)
如documentation中所述,有一些回调函数:
jQuery.getJSON( url [, data ] [, success ] )
所以就这样做:
$.getJSON('/picture', function(){
alert('done reading json');
});