Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jQuery/Ajax请求被发送了两次_Php_Jquery_Ajax_Json - Fatal编程技术网

Php jQuery/Ajax请求被发送了两次

Php jQuery/Ajax请求被发送了两次,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我一次又一次地扫描我的代码,但似乎找不到问题。 当我单击链接#add user btn时,文件actions.php被调用两次(因此php脚本被执行两次) 下面是脚本:我想它与ajax请求前面的javascript有关 $(function () { $("#add-user-btn").click(function (e) { e.preventDefault(); var email = $("#email").val(); var n

我一次又一次地扫描我的代码,但似乎找不到问题。 当我单击链接
#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>

添加新用户
电邮:

姓名:

密码:

授权: 管理员 超级用户 使用者

提交 ×
试试看


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

当我使用一个我只能访问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();
            }
        });
    });
   }
});

但是正确的方法是搜索原因,不要做解决办法。

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

<html>
    <head>
        <script src="utility.js"></script>
        <script src="utility.js"></script>
    </head>


您是否有多个ID为
添加用户btn
的元素,以及
$(“.close reveal modal”)。单击();
此行将重新触发请求?您确定没有双击:)按钮是否在表单中?页面是否重新加载?你怎么知道它两次调用PHP文件?你试过注释掉
$(“.close-reveal-modal”)。单击()?我想知道这是否有影响。我知道,因为我在浏览器控制台中检查了XHR请求。我的文档中只有一个添加用户btn。然而,存在多个接近揭示模态元素。我将对此进行修补。按钮不在表单中(它只是一个链接),页面也不会重新加载。我们都会时不时地猜测一些,但问题中绝对没有任何东西表明这是正确的答案,即使这种方法通常能解决本应在其他地方解决的问题,但也能解决由其他错误引起的问题(但不能解决错误)。季梅杰夫和阿德内奥都是正确的。我回答得有点匆忙,这就解决了问题!非常感谢!我仍然不知道出了什么问题。就像所有其他人所暗示的那样,你应该设法找出根本问题。是否每次提交两次?您是否使用ajax加载元素?上述工作原理意味着您没有两个具有相同id的元素,并且表单问题不会导致您的问题。这取决于浏览器实现,但确实可能发生:
<html>
    <head>
        <script src="utility.js"></script>
        <script src="utility.js"></script>
    </head>