2

我一遍又一遍地扫描我的代码,但我似乎找不到问题所在。当我单击该链接时#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();
            }
        });
    });
});

的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>
4

3 回答 3

16

尝试

$("#add-user-btn").unbind('click').bind('click', function () { });  

这将确保点击事件只被调用一次。

于 2013-07-25T19:25:30.850 回答
1

当我使用只能访问我的 javascript 的特定网站时,我也遇到了这种错误。问题是在其他代码中有很多 $(function() 和 $(document).ready 。

如果你不能纠正核心问题,你可以做些什么来防止这种情况:

var preventRunDefault;
$(function () {
    if(!preventRunDefault) {
    preventRunDefault = true;
    $("#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();
            }
        });
    });
   }
});

但正确的方法是寻找原因,不要采取变通办法。

于 2013-07-25T19:48:32.683 回答
1

当您在 HTML 文件中包含多次相同的 JavaScript 文件时,也会出现此问题。

<html>
    <head>
        <script src="utility.js"></script>
        <script src="utility.js"></script>
    </head>
于 2021-06-06T17:07:35.787 回答