Ajax确认仅要求提供一个数据

我实现了一个ajax beforeSend函数,其中有一个confirm(),问题是在代码中,如果我想在请求确认时删除第一个值,但是如果我单击第二个,第三个或第四个,它就可以了到方法中的URL并执行命令


这是页面


<table>

<thead>

<tr>

<th>ID</th>

<th>Name</th>

<th>Button</th>

</tr>

</thead>

<tbody>

<?php 

$stmt = $DB_con->prepare("SELECT * FROM people");

$stmt->execute();

while($row=$stmt->fetch(PDO::FETCH_ASSOC))

{?>

<tr><td><?php echo $row['id']; ?></td>

<td><?php echo $row['name']; ?></td>

<form method="post" id="del" action="delete.php">

<input type='hidden' id='pid' name='pid' value='<?php echo $row['id']; ?>'>

<button id="send" type="submit">Delete</button>

</form>

</th>

</tr>

<?php

?>

这是ajax功能


$(document).ready(function (e) {

  $("#del").on('submit',(function(e) {

    e.preventDefault();

    $.ajax({

          url: "delete.php",

      type: "POST",

      data:  new FormData(this),

      contentType: false,

          cache: false,

      processData:false,

      beforeSend:function(){

         return confirm("Are you sure you want to delete this?");

      },

      success: function(data)

        {


         alert("Delete Successful");

    window.location.reload(); 


        },

        error: function(e) 

        {


        }           

     });

  }));

});

而无论我要删除哪一条记录,它都应该询问,它应该要求确认。


月关宝盒
浏览 180回答 2
2回答

精慕HU

使用classname class="del"而不是。id id="del"每次提交其唯一执行的第一个表单<table><thead><tr><th>ID</th><th>Name</th><th>Button</th></tr></thead><tbody><?php&nbsp;$stmt = $DB_con->prepare("SELECT * FROM people");$stmt->execute();while($row=$stmt->fetch(PDO::FETCH_ASSOC)){?><tr><td><?php echo $row['id']; ?></td><td><?php echo $row['name']; ?></td><form method="post" class="del" action="delete.php"><input type='hidden' class='pid' name='pid' value='<?php echo $row['id']; ?>'><button id="send" type="submit">Delete</button></form></th></tr><?php}&nbsp;?>

阿晨1998

您在此处创建无效的HTML:while(...){...'>删除...}在每个循环运行中,每次运行中创建3个具有相同ID的对象。一个ID不能多次定义。解决方案:不要使用id=和使用optional&nbsp;class=。在ID后面附加一个唯一的数字,例如&nbsp;id="del-<?php echo $row['id']; ?>"
打开App,查看更多内容
随时随地看视频慕课网APP