单击按钮它加载了一个bootstrap模式。在模态上有一个表单和单击保存按钮我试图通过ajax调用提交表单。第一次ajax调用触发一次,但第二次ajax url触发两次。我在firebug控制台部分看到post url被多次调用。
这是我的jquery代码。
$(".show-modal").click(function() {
$('.upload-modal').modal();
$(".save-logo").click(function(e) {
e.preventDefault();
$.ajax({
type : "POST",
data : data,
contentType: false,
cache : false,
processData: false,
url : "../../io/upload/"
}).done(function(rawData) {
$('.modal-header .close').click();
})
});
})
答案 0 :(得分:8)
问题是你在.show-modal点击处理程序中有.save-logo点击处理程序。因此,每次显示模态时,都会将另一个单击处理程序附加到.save-logo元素。下面的代码应该可以解决这个问题:
$(".show-modal").click(function () {
$('.upload-modal').modal();
});
$(".save-logo").click(function (e) {
e.preventDefault();
$.ajax({
type: "POST",
data: data,
contentType: false,
cache: false,
processData: false,
url: "../../io/upload/"
}).done(function (rawData) {
$('.modal-header .close').click();
})
});
答案 1 :(得分:0)
$(function(){
var editUserId;
$('#edit-user-modal').on('show.bs.modal', function(e) {
editUserId = $(e.relatedTarget).data('userid');
});
$("#edit-user-form").submit(function(event) {
event.preventDefault();
var form = $(this);
var route = "/edit-user/" + editUserId;
if(validateEditUserForm()){
$.ajax({
type: "POST",
url: route,
data: form.serialize(),
success: function(Response)
{
if(Response){
console.log(Response.status);
console.log(Response.message);
if(Response.status == 'success'){
$('#adduser-alert-box').hide();
$("#add-user-form")[0].reset();
$('#adduser-success-box').show();
$('#adduser-success-box').html(Response.message);
}
else{
console.log('User could not be added');
$('#adduser-alert-box').show();
$('#adduser-alert-box').html(Response.message);
}
}
else{
console.log('No Response');
$('#adduser-alert-box').show();
$('#adduser-alert-box').html('No Response');
}
}
});
}
else{
console.log('Validation Error');
$('#adduser-alert-box').show();
$('#adduser-alert-box').html('Please Fill All the Fields Correctly');
}
});});
我遇到了同样的问题,随机地尝试了一些东西。 因此,如果您创建一个全局变量来存储从按钮传递来的“ id”,然后存储来自按钮的“ data”属性的id,则由于您已全局声明了变量,因此单击该按钮时不会发出多个请求! / p>
希望有帮助。