2016-10-01 3 views
-2

Я действительно борется с душевным кода по часам:Jquery событие выполнения дважды

$('#property_image_uploader').on('submit',function(e) { 
     var formData = new FormData(this); 
     $.ajax({ 
      type:'POST', 
      url: $(this).attr('action'), 
      data:formData, 
      cache:false, 
      contentType: false, 
      processData: false, 
      success:function(data){ 
      $.ajax({ 
       contentType: 'application/x-www-form-urlencoded;charset=UTF-8' 
       , method: 'post' 
       , url: 'property_info_box.php' 
       , data: {id: parseInt(data)} 
       , success: function(page){ 
        $('#property_info_box', parent.document).html(page); 
        return false; } 
       }); 
      }, 
      error: function(data){ console.log(data); } 
     }); 
    }); 

    $("#property_image_chooser").on("change", function(e){ 
     $("#property_image_uploader").submit(); 
    }); 

Проблема заключается в том, что каждый раз, когда $ ('# property_image_chooser') изменяется, $ ('# property_image_uploader') submition уволен дважды. Я попытался разместить e.preventDefault() и e.stopImmediatePropagation() везде внутри этих двух функций, и эта проблема исчезла, но затем страница, загружаемая во второй вызов ajax, замерзает, и никакая кнопка не может быть запущена больше ...

+0

Прежде чем мы продолжим с поиском того, что происходит ты пытался что @Dez предложить? – Franco

+0

Ничего, я вижу, что у вас есть вопрос по обновлению, и вы это сделали. Поэтому, пожалуйста, обновите свой код. Чтобы избежать такого недоразумения. – Franco

+0

Проблема со вторым замораживанием ajax обусловлена ​​тем, что * return false; * line. Вам это не нужно. – Dez

ответ

0

Благодаря решению проблемы, добавив e.preventDefault() в подчинении и удалив «return false» во втором вызове ajax. Окончательный код выглядит следующим образом:

$('#property_image_uploader').on('submit',function(e) { 
    var formData = new FormData(this); 
    $.ajax({ 
     type:'POST', 
     url: $(this).attr('action'), 
     data:formData, 
     cache:false, 
     contentType: false, 
     processData: false, 
     success:function(data){ 
     $.ajax({ 
      contentType: 'application/x-www-form-urlencoded;charset=UTF-8' 
      , method: 'post' 
      , url: 'property_info_box.php' 
      , data: {id: parseInt(data)} 
      , success: function(page){ 
       $('#property_info_box', parent.document).html(page); } 
      }); 
     }, 
     error: function(data){ console.log(data); } 
    }); 
}); 

$("#property_image_chooser").on("change", function(e){ 
    e.preventDefault(); 
    $("#property_image_uploader").submit(); 
}); 

Спасибо всем очень много ...

Смежные вопросы