jQuery ajax调用有时会执行两次

时间:2018-04-24 21:43:22

标签: javascript php jquery

我看到还有其他类似的问题,但似乎没有一个问题可以解决我的问题。

我有一个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>

0 个答案:

没有答案