Javascript事件处理程序还是?

时间:2015-05-13 00:28:02

标签: javascript php html ajax

我有一个问题。我有一个php文件,包含删除,插入和显示数据的查询。文件中还有一个删除按钮。要执行删除查询,它将类似于

if($_POST['delete'])
 {
     //execute delete query
 }

位于PHP文件中。现在我已经实现了ajax并且我想仅在单击按钮时执行删除查询,而是通过使用javascript中的函数(我不太确定这是正确的方式还是最合适的方式)。因此,每次单击删除按钮时,都会执行一个javascript函数,以便ajax可以工作。但它似乎没有做任何事情。我是通过使用javascript函数在按钮点击时执行的正确方法,还是有其他更好的方法吗?我之所以这样做是因为我希望所有查询都在一个文件中,这就是为什么我使用if语句来检测之前是否点击了该按钮。

P.S。我正在使用纯JavaScript代码,因为我还在学习,所以如果有任何建议,我更喜欢原始代码而不是jQuery。如果您想查看代码,请发表评论,因为我之前已经提出类似的问题,但我找不到我想要的答案。

编辑:以下是代码

这是javascript外部文件(仅限删除功能)

function deleteButtonClick(){
  //Perform the Ajax request to delete this user
  var del = document.getElementById("delete").innerHTML;
  var delRow = document.getElementById("deleteRow").innerHTML;
  var page = "database.php";
  var parameters = 'delete=true&deleteRow='+delRow;
  var xmlhttp = new XMLHttpRequest();

    if(confirm('Are you sure you want to delete this?')==true){

      xmlhttp.onreadystatechange=function(){
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
         return false;
        }
      }
      xmlhttp.open("GET", page+"?"+parameters, true);
      xmlhttp.send(null);
     }
    }

这些是PHP文件中用于执行查询的代码

   // Delete Row
    if(isset($_POST['delete'])){
     $id = $_POST['deleteRow'];
     $query_string = "delete from $table_info where user_id='$id'";
     $result = @mysql_query($query_string);
     echo "row deleted";
     }

这些是同一个PHP文件中的代码,用于表中每行的删除按钮

 echo "<td><input type='hidden' id='deleteRow' value=".$row['user_id']."/>";
 echo "<input type='button' id='delete' value='Delete' onclick='deleteButtonClick()'/></td>";
 echo "</tr></form>";

1 个答案:

答案 0 :(得分:0)

我设法以最简单的方式编写代码。

function deleteThis(count){

 var id  = document.getElementById("row"+count).innerHTML;
 var page = "database.php";
 var parameters = 'id='+id+'&action=delete';
 var xmlhttp = new XMLHttpRequest();

 if(confirm('Are you sure you want to delete this?')==true){

 if(xmlhttp==null){
  alert("Your browser does not support ajax!");
  return false;
 }
 xmlhttp.onreadystatechange=function(){
  document.getElementById("divTable").innerHTML=xmlhttp.responseText; 
 };
 xmlhttp.open("GET", page+"?"+parameters, true);
 xmlhttp.send(null);
 }
}

在PHP文件中:

                                  .
                                  .
                            Some other codes
                                  . 
                                  .


function insertRow($name, $address, $phone, $gender, $nation){
  $table_info = "info";
  $query_string = "insert into $table_info(name, address, phone, gender, nation) values('$name', '$address', '$phone', '$gender', '$nation');";
  $result = @mysql_query($query_string) or die (mysql_error());  
}
?>

<?php
$action = rtrim($_REQUEST['action']);

if($action=="delete"){

 $id  = rtrim($_REQUEST['id']);
 echo deleteRow($id);
 echo update_database(); 
}
elseif($action=="insert"){

 $name = $_REQUEST['name'];
 $address = $_REQUEST['address'];
 $phone = $_REQUEST['phone'];
 $gender = $_REQUEST['gender'];
 $nation = $_REQUEST['nation'];

 echo insertRow($name, $address, $phone, $gender, $nation);
 echo update_database();
}
else{
 echo update_database();
}  
?>

基本上,我忽略了php的功能,忘记了我仍然可以用函数操纵整个逻辑。我完全从按钮中删除了整个表单和隐藏的输入,并使用onclick执行基于变量$count的函数。每次添加一行时它会递增,这使得我更容易使用数据库中可用的实际唯一ID。之后我所要做的只是请求我需要的数据,并在我的函数中使用它来解释查询。