jQuery/Ajax请求被发送两次

Jen*_*zor 2 php ajax jquery json

我一遍又一遍地扫描我的代码,但我似乎无法找到问题所在.当我单击链接时#add-user-btn,文件actions.php被调用两次(因此PHP脚本执行两次).

这是脚本:我想它与ajax请求前面的javascript有关?

$(function () {
    $("#add-user-btn").click(function (e) {
        e.preventDefault();
        var email = $("#email").val();
        var name = $("#name").val();
        var action = "adduser";

        $.ajax({
            url: '../actions.php',
            type: 'POST',
            data: {
                action: action,
                email: email,
                name: name,
            },
            dataType: 'json',
            success: function (data) {
                $(".close-reveal-modal").click();
            }
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

HTML:

<div id="adduser" class="reveal-modal">
 <h1>Add new user</h1>
 <p><label for="email">E-mail:</label> <input id="email" name="email" type="text" placeholder="name@example.com" /></p>
 <p><label for="name">Name:</label> <input id="name" name="name" type="text" placeholder="Adam Smith"/></p>
 <p><label for="password">Password:</label> <input id="password" name="password" type="password" placeholder="123456" /></p>
 <p>
 <label for="authorization">Authorization:</label> 
 <select id="authorization" name="authorization">
    <option value="0">Administrator</option>
    <option value="1">Superuser</option>
    <option value="2">User</option>
 </select>     
 </p>
 <button id="add-user-btn">Submit</button>
 <a class="close-reveal-modal">&#215;</a>
 </div>
Run Code Online (Sandbox Code Playgroud)

Jef*_*gan 16

尝试

$("#add-user-btn").unbind('click').bind('click', function () { });  
Run Code Online (Sandbox Code Playgroud)

这将确保只调用一次click事件.

  • 即使这样,也很高兴知道为什么OP的代码会发射两次. (4认同)
  • 我们都会不时地猜测一下,但问题中没有任何内容表明这是正确答案,即使这种方法经常解决其他地方应该解决的问题. (2认同)
  • 像所有其他人一直暗示的那样,你应该试着弄清楚潜在的问题.它每次提交两次吗?你在使用ajax加载元素吗?上述工作意味着您没有两个具有相同ID的元素,并且表单问题不会导致您的问题. (2认同)