Javascript 确认&;警报未在我的Ajax成功函数中触发
我有一个函数,用于显示来自Ajax请求的表:Javascript 确认&;警报未在我的Ajax成功函数中触发,javascript,ajax,alert,confirm,Javascript,Ajax,Alert,Confirm,我有一个函数,用于显示来自Ajax请求的表: function loadExternalBenefits() { var id_project = $('input[name=id_project]').val(); $.ajax({ url : '/projects/getExternalBenefits', method : 'POST', data : {'fk_project' : id_project, '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;
});
},
});
}
如果我在success函数中执行“console.log('something'),它会工作,但我无法执行警报或确认。问题是我在点击时有一个触发器,必须触发一个确认窗口。它系统地显示console.log“ko”,甚至不显示对话框
当然,我的控制台中没有错误,我也无法在Internet上找到解决方案,因为大多数情况下,这是Ajax返回错误的问题(不是成功)
你有什么想法吗
@这是console.log(结果)
利伯莱
定量
阿查特大奖赛
科夫。
大奖赛总计
玛吉
外部救济
3.
150,00 €
1.2
540,00 €
90,00 €
x
将其放入$(文档).ready()中
在上面的代码中,写
$('.delete_external_benefits').trigger("click");
我希望这会起作用您在ajaxsuccess
回调中附加了一个click处理程序-这没有什么意义。您实际想做什么?JQuery的.on()
方法用于向元素注册事件处理程序,这样您的单击函数就不会在ajax请求的成功回调中执行。您可以尝试放置控制台.log(结果)吗
在success
函数中,并共享打印的内容?@Jamiec:我把我的点击处理程序放在这里,因为触发器在success(result)中抛出的表中。威尔.哈里斯:我试过使用just.click(),但它不太管用。@el_tomato:我可以,但它没有兴趣,它只是一个HTML表。我编辑了这个主题。OP说这个was元素是在ajax成功中动态加载的,这不会起作用!很好-你可以委托给#外部利益小组
,这是OP加入新内容的地方,而不是文档正文
。谢谢,也可以这样做。但是我更喜欢使用document.body
,因为我将来可能会更改id
或class
我正在委派的任务。因此,这将停止我运行的代码,并大大降低它的运行速度;)
$(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");