[英]jQuery/Ajax request is being sent twice
我一遍又一遍地掃描我的代碼,但似乎找不到問題所在。 當我單擊鏈接#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">×</a>
</div>
嘗試
$("#add-user-btn").unbind('click').bind('click', function () { });
這將確保點擊事件只被調用一次。
當我使用一個我只能訪問我的 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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.