我看到还有其他类似的问题,但似乎没有一个问题可以解决我的问题。
我有一个ajax调用,应该将一些数据插入MySQL数据库,但有时,数据会被插入两次。它不会一直发生。只是有时。这似乎发生在随机用户身上。
我没有找到带有重复ID的元素。看起来脚本没有加载两次,因为它不会一直发生。
此JS脚本已在Bootstrap模式中加载:
<script src="js/app/lancamentos/vendas/venda.js"></script>
这是我的ajax调用,在函数cadastrar()中:
//Define método a ser utilizado ao enviar formulário
var classe = "Venda";
var metodo = "cadastrar";
//Define url
//Esse valor é utilizado para definição de permissão dentro da classe PHP
var url = "cadastra-venda";
//Habilita campos de valores totais
$('#valorTotalProdutos, #valorTotalDesconto, #valorTotalCredito, #valorTotalVenda').prop('disabled', false);
//Dados do formulário
var formData = new FormData($('#formCadastro')[0]);
var idVenda = $("#formCadastro #idVenda").val();
var idCliente = $("#formCadastro #idCliente").val();
//Informações adicionais do formulário
formData.append('classe', classe);
formData.append('metodo', metodo);
formData.append('url', url);
//Argumentos da função - Venda::cadastrar
formData.append('arg[]', idVenda);
formData.append('arg[]', idCliente);
$.ajax({
type: 'POST',
url: 'config/router.php',
data: formData,
async: true,
cache: false,
contentType: false,
processData: false,
success: function (response) {
//Preenche campos de empresa e depósito
$("#formCadastro #idEmpresa").val($('#formCadastro #empresa').val());
$("#formCadastro #idDeposito").val($('#formCadastro #deposito').val());
//Coloca pedido de venda em modo Somente Leitura
$("#formCadastro #somenteLeitura").val('S');
verificarPermissao();
$('body').loadingModal('destroy');
alert(response);
},
error: function () {
$('body').loadingModal('destroy');
alert('Ocorreu um erro ao cadastrar o pedido de venda.');
}
});
函数verificarPermissao()在成功调用内只禁用一些输入。没有比这更好的了。
以下是ajax的调用方式:
$("#buttonSalvarVenda").unbind().click(function () {
cadastrar();
});
这就是按钮的样子:
<button type="button" id="buttonSalvarVenda" class="btn btn-primary">Salvar</button>