2015-04-26 79 views
-2

我的函數有點問題。 當我執行一個多次啓動Ajax調用的函數時,它每次都會調用呼叫的次數。 例如,我想第一次發表評論,一切都很順利。但如果我想發送另一個,它會發送兩次。如果我再做一次,它會發送三次。 如果你能幫助我,這將是偉大的:D 在此先感謝。避免ajax請求的乘法

的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()函數。如果它可以幫助...

+2

粘貼您嘗試使用的代碼 –

+3

聽起來像是在複合元素上的點擊處理程序。你的代碼在哪裏?很難排除我們看不到的東西 – charlietfl

+0

這是它。謝謝 –

回答

0

我得到了解決方案。

我的問題來自$ .getScript()函數的多次執行。

但我能做到這一點,解決它:

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

script_bool變量稱爲腳本的名稱。

如果它可以幫助某人。