Javascript 使用ajax向服务器发送数据时出现问题
我已经编写了一段代码,用HTML从数据库中创建了一个表,我希望在每一行上都有delete和confirm按钮。我将整行放在Javascript 使用ajax向服务器发送数据时出现问题,javascript,php,html,ajax,Javascript,Php,Html,Ajax,我已经编写了一段代码,用HTML从数据库中创建了一个表,我希望在每一行上都有delete和confirm按钮。我将整行放在属性中。在JavaScript文件中,我读取电子邮件的值,并使用ajax将其发送到服务器,服务器执行操作。问题是当我想删除一行或使用每行的按钮确认它时,它只适用于第一行,即使我单击了另一行的按钮。我使用了document.getElementById('email'),但它总是返回第一行。以下是我的html代码: <table id="example1" class="
属性中。在JavaScript文件中,我读取电子邮件的值,并使用ajax将其发送到服务器,服务器执行操作。问题是当我想删除一行或使用每行的按钮确认它时,它只适用于第一行,即使我单击了另一行的按钮。我使用了document.getElementById('email')
,但它总是返回第一行。以下是我的html代码:
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>نام کاربر</th>
<th>ایمیل</th>
<th>تایید</th>
</tr>
</thead>
<tbody>
<?php
while ($users = mysqli_fetch_assoc($result_user)) {
?>
<tr>
<form name="ajax-demo" id="ajax-demo" method="get">
<td><?php echo $users['name']?></td>
<td><?php echo $users['email']?></td>
<input id="email" type="hidden" name="email" value="<?php echo $users['email']?>">
<td>
<div class="btn-group">
<button onclick="confirmUser()" id="btnConfirm" type="submit" class="btn btn-success btn-flat">
تایید
</button>
<button type="button" class="btn btn-success btn-flat dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu" role="menu">
<li>
<a onclick="deleteUser()" id="btnDelete">حذف</a>
</li>
</ul>
</div>
</td>
</form>
</tr>
<?php }?>
</tbody>
</table>
نام کاربر
ایمیل
تایید
如果我正确理解您的问题,请对delete执行同样的操作。。您的数据库条目可以根据数据库的结果创建表行。但是,即使单击第二个元素,它也总是从表行获取第一封电子邮件的id
理由:你可以这样做
<?php
$email = 'myemail.com';
?>
<button onclick="confirmUser('<?php echo $email; ?>')"class="btn btn-success btn-flat"> Delete Me </button>
<script>
function confirmUser(email)
{
console.log("The email to delete is: " + email);
}
</script>
“id”值必须是唯一的;您的代码多次使用相同的“id”值。您不能将表单嵌套到这样的表行中-表单需要环绕整个表,或者包含在单个表单元格中。您有多个具有相同id的表单,并且表单不能是表的子表单。你是对的,但是我将如何实现class=“email”?你的案例非常简单,我建议使用以下代码。你可以根据自己的需要调整它,但本质上它只是传递电子邮件的值,以便直接删除,因此你甚至不需要id或类。我已经用代码编辑了我的答案,您可以根据您的解决方案进行调整。它适用于“确认”按钮,但因为“删除”按钮实际上不是一个按钮。这是一个标记,我在使用onclick=“deleteUser(this).function deleteUser(this){var email=this.getAttribute(“email”).value;…}时出错
<?php
$conn = mysqli_connect('localhost', 'root', 'root', 'my_scheme');
if (!$conn) {
die('Connection failed ' . mysqli_error($conn));
}
if (isset($_POST['email'])) {
$email_user = $_POST['email'];
$sql = "UPDATE my_scheme.tbl_user SET active='true' WHERE email='".$email_user."'";
if (mysqli_query($conn, $sql)) {
echo '<h5 class="headline text-green">کاربر با موفقیت تایید شد!</h5>';
}else {
echo "Error: ". mysqli_error($conn);
}
exit();
}
else {
echo "failed";
}
<button onclick="confirmUser(this)" data-email="<?php echo $users['email']?>" id="btnConfirm" type="submit" class="btn btn-success btn-flat">تایید</button>
function confirmUser(this) {
var email = this.getAttribute("email");
var xhr;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE 8 and older
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
var data = "email=" + email;
xhr.open("POST", "confirm_user.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(data);
xhr.onreadystatechange = display_data;
function display_data() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
//alert(xhr.responseText);
document.getElementById("txtHint").innerHTML = xhr.responseText;
} else {
alert('There was a problem with the request.');
}
}
}
}
<?php
$email = 'myemail.com';
?>
<button onclick="confirmUser('<?php echo $email; ?>')"class="btn btn-success btn-flat"> Delete Me </button>
<script>
function confirmUser(email)
{
console.log("The email to delete is: " + email);
}
</script>