2016-01-20 65 views
0

我從一個Ajax請求顯示錶的功能:確認與警告在我的Ajax成功功能無法觸發

function loadExternalBenefits() { 
    var id_project = $('input[name=id_project]').val(); 
    $.ajax({ 
     url : '/projects/getExternalBenefits', 
     method : 'POST', 
     data : {'fk_project' : id_project, 'ajax' : true}, 
     success : function(result) { 
      $('#panel-external-benefits').find('.right').first().html(result); 

      $('.delete_external_benefits').on('click', function() { 
       if(confirm("Voulez-vous vraiment supprimer cette ligne ?")) { 
        console.log('ok'); 
        var id_item = $(this).data('id'); 
        deleteExternalBenefits(id_item); 
       } else { 
        console.log('ko'); 
       } 
       return false; 
      }); 
     }, 
    }); 
} 

如果我做了「的console.log(‘東西’)」中的成功功能,它的工作原理,但我不能做一個警報或確認。問題是我有觸發點擊,必須觸發確認窗口。系統地顯示console.log「ko」,甚至不顯示對話框。

當然,我沒有錯誤在我的控制檯,我不能在互聯網上找到一個解決方案,因爲大部分時間,這是阿賈克斯的返回一個錯誤(沒有成功)的問題。

你有什麼想法嗎?

@el_tomato:這裏是的console.log(結果)

<table class="classic-table"> 
    <thead> 
     <tr> 
      <th>Libellé</th> 
      <th>Quantité</th> 
      <th>Prix d'achat</th> 
      <th>Coeff.</th> 
      <th>Prix total</th> 
      <th>Marge</th>    
      <th></th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td>Une prestation externe</td> 
      <td class="align-center">3</td> 
      <td class="price align-right">150,00 €</td> 
      <td class="price align-right">1.2</td> 
      <td class="price align-right">540,00 €</td> 
      <td class="price align-right">90,00 €</td> 
      <td><button class="delete_external_benefits delete" data-id="24">x</button></td> 
     </tr> 
    </tbody> 
</table> 
+0

你在ajax'success'回調中附加了一個點擊處理程序 - 這沒什麼意義。你究竟在做什麼? – Jamiec

+0

JQuery的'。對()'方法用於註冊事件處理程序的元素讓你的點擊功能將不會在Ajax請求的成功回調執行 –

+0

你可以嘗試把一個'的console.log(結果)'內「成功」功能並分享打印內容? – elTomato

回答

0

將這個內部$(document).ready()

$(document.body).on("click", ".delete_external_benefits", function(e) { 
    if(confirm("Voulez-vous vraiment supprimer cette ligne ?")) { 
     console.log('ok'); 
     var id_item = $(this).data('id'); 
     deleteExternalBenefits(id_item); 
    } else { 
     console.log('ko'); 
    } 
    return false; 
}); 

而代替上述代碼,寫入

$('.delete_external_benefits').trigger("click"); 

我希望應該工作

+0

OP聲明這個元素是在ajax成功動態加載的,這個不行! – Jamiec

+0

好的 - 你可以委託給'#panel-external-benefits',這是OP放置新內容而不是'document.body'的地方。 – Jamiec

+0

謝謝,這也可以做到。但我更喜歡使用'document.body',因爲我可能會改變將來委託的'id'或'class'。所以這會阻止我的運行代碼。 – Sanchit