Я написал запрос на отправку ajax, однако он, кажется, выполняет несколько раз. В первый раз, когда я нажимаю кнопку, он будет выполняться только один раз, однако во второй раз, когда я нажимаю кнопку, он будет дважды запускать код, три раза будет выполняться три раза и так далее. Я не уверен, что вызывает эту проблему, вот мой запрос на отправку ajax. Если вам нужна какая-либо другая информация, я с радостью предоставит ее.Выполнение Ajax несколько раз
$(document).ready(function() {
$('#postEditDatasource').click(function (event) {
//serialise and assign json data to hidden field
$('#dsDeletedDP').val(JSON.stringify(deleted));
$('#dsEditedDP').val(JSON.stringify(editDPArr));
//get the form
var form = $('#__dsAjaxAntiForgeryForm');
var URL = 'Settings/EditDatasource';
$('#__dsAjaxAntiForgeryForm').on('submit', function() {
$.ajax({
url: URL,
data: form.serialize(),
type: 'POST',
success: function (result) {
reloadPostEditAction($('#dsID').val());
if (deletedDatapoints != null) {
DeleteFromTable(deleted);
}
//clear all values from hidden inputs
$('input:hidden').each(function() {
if ($(this).attr('name') != '__RequestVerificationToken' && $(this).attr('id') != 'dsID') {
$(this).val('');
}
});
$('#dsEditedDP').val('');
ShowDatasourcePostAlert('#successPost', 3000);
},
error: function (jqXHR, textStatus, errorThrown) {
//alert(jqXHR + ', ' + textStatus + ', ' + errorThrown);
ShowDatasourcePostAlert('#successPost', 3000);
}
})
return false;
})
});
})
У вас нет много #postEditDatasource, созданного после нажатия? – aorfevre
Знаете ли вы, как я могу проверить? и если это так, то это будет иметь смысл. Вы знаете, как я могу обойти это? – Johnathon64
Вы переписываете '$ ('#__ dsAjaxAntiForgeryForm'). On ('submit' ...' каждый раз, когда происходит событие клика, поэтому для каждого последующего щелчка обработчик события запускает обратный вызов n раз. один раз или развязать сначала. $ ('#__ dsAjaxAntiForgeryForm'). off ('submit') ' – lemieuxster