Php Foreach行jQuery对话框

Php Foreach行jQuery对话框,php,jquery,jquery-ui-dialog,Php,Jquery,Jquery Ui Dialog,我正在建立一个div,它是网站主页的一部分。此div显示项目列表。所有项目都保存在MySQL数据库中。我想做的是在每一行旁边创建一个按钮,上面写着“删除”。单击delete之后,应该会出现一个jQueryUI对话框提示用户进行确认。当确认删除项目时,必须将项目id发送到删除页面(我们称之为delete.php) 到目前为止我做了什么 从MySQL获取项目列表,并将每个项目显示为一行 在每行末尾添加了一个删除按钮 单击“删除”按钮时,将显示对话框,要求确认 当用户确认删除项目时,他将被发送到删除

我正在建立一个div,它是网站主页的一部分。此div显示项目列表。所有项目都保存在MySQL数据库中。我想做的是在每一行旁边创建一个按钮,上面写着“删除”。单击delete之后,应该会出现一个jQueryUI对话框提示用户进行确认。当确认删除项目时,必须将项目id发送到删除页面(我们称之为delete.php)

到目前为止我做了什么

  • 从MySQL获取项目列表,并将每个项目显示为一行
  • 在每行末尾添加了一个删除按钮
  • 单击“删除”按钮时,将显示对话框,要求确认
  • 当用户确认删除项目时,他将被发送到删除页面
这就是我被困的地方。 在删除页面上,我回显项目id以查看它是否有效。不知怎的,delete.php页面总是回显第一个项目的id。这意味着jquery总是发送第一个项目的id

我怎样才能解开这个谜

$currents    =   new Project();
$currents    =   $currents->getProjects($_SESSION["user"], "finished");
echo "<table>";
foreach($currents as $current){
 echo "<tr><td>" . $current["name"] . "</td>
 <td><form method='post' class='deleteproject' action='/requests/request.php'/>
 <input type='hidden' name='projectid' value='" . $current['id'] . "' />
 <input type='button' value='Delete' class='deleteproject'></form></td></tr>";

}
echo "</table>";
$currents=新项目();
$currents=$currents->getProjects($_SESSION[“user”],“finished”);
回声“;
foreach($当前为$当前){
回显“.$current[“name”]”
";
}
回声“;
这里是jQuery

<script>
  $(function()
  {
      $( ".deleteproject" ).click(function() {
          $( "#dialogbox" ).attr('title', 'Are you sure you want to delete this project?').dialog({
              height: 100,
              width: 350,
              modal: true,
              buttons : {
                  "Confirm" : function() {
                      $('.deleteproject').submit();
                  },
                  "Cancel" : function() {
                      $(this).dialog("close");
                  }
              }
          });
          return false;
      });
  });
  </script>

$(函数()
{
$(“.deleteproject”)。单击(函数(){
$(“#dialogbox”).attr('title','您确定要删除此项目吗?')。对话框({
身高:100,
宽度:350,
莫代尔:是的,
按钮:{
“确认”:函数(){
$('.deleteproject').submit();
},
“取消”:函数(){
$(此).dialog(“关闭”);
}
}
});
返回false;
});
});
执行
$('.deleteproject').submit()时
,则始终发送第一个
.deleteproject
,而不是单击的项目。要解决这个问题,您可以保存
引用并提交您的父表单

$( ".deleteproject" ).click(function() {
  $this = $(this);
  $( "#dialogbox" ).attr('title', 'Are you sure you want to delete this project?').dialog({
      height: 100,
      width: 350,
      modal: true,
      buttons : {
          "Confirm" : function() {
              $this.closest('form').submit();
          },
          "Cancel" : function() {
              $(this).dialog("close");
          }
      }
  });

旁注:您的表单类名也是
.deleteproject
,因此即使您不单击按钮,但在表单上,您的函数也将启动。另外,(对此不确定)我认为由于事件冒泡,您的脚本将触发两次。点击按钮
deleteproject
也是点击表单
deleteproject