填充隐藏的div,当它完成时显示div

时间:2018-02-22 09:51:11

标签: javascript jquery

所以我有这个问题:在表格中我有这个按钮。当我点击它时,我想要发生两件事:

  1. 使用$ .getJSON(url)
  2. 填充隐藏div中的字段
  3. 当它完成时,显示div
  4. 除了每次都在设置字段值之前显示div,因此您可以看到要更改的值。

    这是我试过的:

    var promise = $.getJSON(url);
    var done = promise.done(function(data){
        //setting the value for the fields in the hidden div
    });
    if (done){
        showHide(id); //show the div
    }
    

    仅供参考,showHide(id)是在外部Javascript文件中定义的函数,而其余代码是在jsp文件中的脚本标记内定义的(我显然包含了Javascript文件)。

    我也尝试将showHide函数放在匿名函数中,但在这种情况下,根本没有调用showHide(好像它没有被识别)。

    我能做什么?提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用Promise来实现这一目标。

new Promise内做任何你想做的事。 resolve当你完成后,然后在.then()

中完成下一件事

var promise = new Promise((resolve, reject) => {
  //I'll use a setTimeout here to demonstrate
  setTimeout(function(){
    $('#toShow').text('I\'m done here !');
    resolve();
  },2000);
});

promise.then(function(){
  console.log($('#toShow').text());
});
div{
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="toShow"></div>

答案 1 :(得分:0)

您可以使用successerror回调函数,如jQuery documentation中所述:

$.getJSON(url, function(result) {
    // Success
    $("#myDiv").text(result);
    $("#myDiv").show();
})
.error(function() { 
    // Fail
    alert("error"); 
})