完成settimeout后如何触发功能?

时间:2017-05-15 07:14:33

标签: javascript jquery ajax

如何在完成setTimeout后触发我的ajax函数?

我有ajax功能,我希望在我的框显示后尝试触发它我在setTimeout函数内部尝试,它没有正常工作它在settimeout之前和settimeout之后都工作,我只需要在settimeout完成之后触发它或者我告诉它你喜欢这个:

当我的settimeout工作时,我的ajax函数必须

function canliDestekOpen(e) {
    var boxDel = $(e).attr("data-delay");
    setTimeout(function() {
        $(".canli-destek").fadeIn();

         /*
        $.ajax({
            url: "/ajax/showinvite",
            method: "post",
            success: function(data) {

            }
        });
*/
        
    }, parseInt(boxDel) * 1000);
}
canliDestekOpen(".canli-destek");
.canli-destek {
  display: none;
  font-family: sans-serif;
  width: 398px;
  height: 112px;
  border: 2px solid #faa82b;
  background: #ccc;
  border-radius: 3px;
  position: relative;
  margin: 0 auto;
}
.canli-destek .canli-destek-inner {
  padding-left: 30px;
  padding-top: 15px;
  position: absolute;
}
.canli-destek .canli-destek-inner span {
  margin-right: 20px;
}
.canli-destek h6 {
  font-weight: bold;
  font-size: 16px;
  color: #222222;
}
.canli-destek p {
  font-size: 14px;
  color: #4e4e4e;
  margin-bottom: 6px;
}
.canli-destek button {
  background: #012770;
  color: #FFF;
  font-weight: bold;
  font-size: 13px;
  text-align: center;
  border: none;
  padding: 6px 22px;
  cursor: pointer;
}
.canli-destek .canli-destek-kapat {
  position: absolute;
  top: 0;
  right: 0;
  background: #faa82b;
  color: #FFF;
  cursor: pointer;
  padding: 12px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="canli-destek" data-delay="3">
        <div class="canli-destek-inner">
            <button data-link="http://www.google.de">Start Conversation</button>
        </div>
        <div class="canli-destek-kapat">
            <span class="ani-icon-error-1 canli-kapat-icon">X</span>
        </div>
    </div>

2 个答案:

答案 0 :(得分:1)

不确定这是否是你想要的

jQuery的.fadeIn是一个异步函数,这意味着在触发fadeIn之后将继续执行代码,而无需等待它完成。

如果你想在完成fadeIn之后调用你的AJAX,那么将它作为函数参数传递给.fadeIn

$(".canli-destek").fadeIn(function (){
    $.ajax({
        url: "/ajax/showinvite",
        method: "post",
        success: function(data) {

        }
    });
});

答案 1 :(得分:0)

我不确定我的回答

数据延迟是否返回字符串或数字?是否从string转换为parseInt?。

试试这个

$( e ).data( "delay" )