避免乘以ajax请求

时间:2015-04-26 21:47:15

标签: javascript jquery ajax

我的功能有点问题。 当我执行一个多次启动Ajax调用的函数时,它每次都会增加调用次数。 例如,我想发一个评论,第一次,一切都很顺利。但如果我想发送另一个,它将发送两次。如果我再次这样做,它将被发送三次。 如果你能帮助我,那就太棒了:D 提前致谢。

使用Javascript:

$('.modifier').live('click',function(e){
    e.preventDefault();
        $('#error').hide();
        var form = document.querySelector('form')
        var formdata = new FormData(form);
        formdata.append('fichier', window.file[0]);
        //console.log(window.file[0]);


        $('input[name=titre]').val('');
        $('input[name=fichier]').val('');
        $('textarea[name=description]').val('');

        window.request_upload = $.ajax({
            xhr: function()
              {
                var xhr = new window.XMLHttpRequest();
                //Upload progress
                xhr.upload.addEventListener("progress", function(evt){
                  if (evt.lengthComputable) {
                    var percentComplete = evt.loaded / evt.total;
                    $('.chargement').show();
                    $('.chargement> #progress_bar').css({'width' : percentComplete*100 + '%'}).text(Math.round(percentComplete*100) + '%');
                    //console.log(percentComplete);
                  }
                }, false);
                return xhr;
              },
            url: "foobar.php",
            type: "POST",
            data: formdata, 
            async: true ,
            cache: false,
            contentType: false,
            processData: false
        })
        .done(function(data){

            var json = $.parseJSON(data);
            //console.log('Data : '+data);
            //console.log('L\'erreur : '+json.erreur);

            if(json.erreur == 0)
            {
                //console.log(json.titre);
                var titre = json.titre;
                $.notify('Votre photo : "'+titre+'" a bien été envoyé !',{autoHideDelay: 10000, className: 'success'});
                $('.drop_depot').removeClass('hover');
                $('.chargement').hide();
                $(this).removeClass('hover');
                $('.drop_depot').empty().append('<span>'+options.message+'</span>');
                $('.drop_depot').css({'width': '30%', 'height': '100px' });
                $(window).resize();
                $('input[type=file]').val('');
            }
            else{
                $('.chargement').hide();
                $('#error').show().after(json.erreur + ' ' + json.erreurs);
            }
        });
    }
});

我通过以下方式加载此脚本:$ .getScript()函数。如果它可以帮助...

1 个答案:

答案 0 :(得分:0)

我得到了解决方案。

我的问题来自$ .getScript()函数的多次执行。

但我可以这样做来解决它:

if(!$("body").data(script_bool))
{
    $.getScript(script);
    $("body").data(script_bool, true);
}

script_bool变量是名为。

的脚本的名称

如果它可以帮助某人。