gpt4 book ai didi

javascript - Ajax执行多次

转载 作者:行者123 更新时间:2023-12-02 15:59:56 25 4
gpt4 key购买 nike

我已经编写了一个ajax post请求,但它似乎执行了多次。第一次单击该按钮时,它只会执行一次,但是第二次单击该按钮时,它将运行代码两次,三次将执行三次,依此类推。我不确定是什么导致了这个问题,这是我的 ajax post 请求。如果需要任何其他信息,我很乐意提供。

$(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').click(function (event) {

您在此处添加一个新事件:$('#__dsAjaxAntiForgeryForm').on('submit', function () {

所以,事件复合了。每次单击 #postEditDatasource 元素时,将提交事件处理程序分配给 #__dsAjaxAntiForgeryForm

换句话说,第一次单击时,您有一个提交事件处理程序。第二次单击时,您将有两个提交事件处理程序。第三次单击时,您将拥有三个提交事件处理程序,依此类推...

您可以通过首先删除提交事件处理程序(使用 .off(),例如 $('#__dsAjaxAntiForgeryForm').off().on('提交', function () {

关于javascript - Ajax执行多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31277613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com