javascript函数在ajax调用后停止

时间:2016-03-15 16:44:00

标签: javascript php ajax

下午好,

我有两个函数,一个在ajax中另一个在js中,如下所示:

<script>
    /* AJAX request to checker */
    function check(){
        $.ajax({
            type: 'POST',
            url: 'checker.php',
            dataType: 'json',
            data: {
                counter:$('#message-list1').data('counter')
            }
        }).done(function( response ) {
            /* update counter */
            $('#message-list1').data('counter',response.current);
            /* check if with response we got a new update */
            if(response.update==true){
                $('#message-list1').html(response.news);
                var audio = new Audio('ding.mp3');
            audio.play();
            }
        });

    }

    //Every 20 sec check if there is new update
    setInterval(check,2000);
</script>
<script>
    function reblink() {
        $.getScript($('script:first',data).attr('src'), function(){
           eval(blink('.blink'););
        });
</script>

现在reblink函数在调用ajax函数后立即停止。再次它确实在我物理刷新页面时开始。我想要实现的是在每次调用ajax函数后启动此函数。

我试图通过放置以下两个函数来合并它们:

$.getScript($('script:first',data).attr('src'), function(){
    eval(blink('.blink'););

但在if(response.update==true){ }中,它确实阻止了ajax的运作。

任何建议都非常感谢。

更新 因此,在评论代码中提到的更改现在如下所示:

                <script>
    /* AJAX request to checker */
    function check4(){
        $.ajax({
            type: 'POST',
            url: 'checker.php',
            dataType: 'json',
            data: {
                counter:$('#last-orders').data('counter')
            }
        }).done(function( response ) {   /* update counter */
        $('#last-orders').data('counter',response.current);
        /* check if with response we got a new update */
        if(response.update==true){
            $('#last-orders').html(response.news4);
            var audio = new Audio('ding.mp3');
        audio.play();
        reblink() // call reblink here to execute
        }
    });
    }
    //Every 20 sec check if there is new update
    setInterval(check4,2000);
</script>

reblink

<script>
function reblink() {
    $.getScript($('script:first',data).attr('src'), function(){
       eval(blink('.blink'));
    });
    }
</script>

和实际执行闪烁效果的功能

<script type="text/javascript">//<![CDATA[
$(window).load(function(){
function blink(selector){
$(selector).fadeOut('slow', function(){
    $(this).fadeIn('slow', function(){
        blink(this);
    });
});
}

blink('.blink');

});//]]> 

</script>

在所有这些stil之后,ajax的呼叫确实停止了闪烁。

1 个答案:

答案 0 :(得分:0)

此脚本的语法错误。

<script>
    function reblink() {
        $.getScript($('script:first',data).attr('src'), function(){
           eval(blink('.blink');); // the (;) is the error  
        });
    //} this closing bracket for the function here is missing
</script>

以下是正确的语法。

<script>
    function reblink() {
        $.getScript($('script:first',data).attr('src'), function(){
           eval(blink('.blink'));
        });
    }
</script>

<强>更新

我可以在您的代码中看到您没有调用reblink()函数。你还提到要在reblink()之后调用ajax,你应该将reblink()放在你的ajax的.done({});部分里面。

.done(function( response ) {   /* update counter */
            $('#message-list1').data('counter',response.current);
            /* check if with response we got a new update */
            if(response.update==true){
                $('#message-list1').html(response.news);
                var audio = new Audio('ding.mp3');
            audio.play();
            reblink() // call reblink here to execute
            }
        });