删除文档并更新数据库

时间:2012-07-12 16:28:18

标签: php javascript sqlite

我有2个文件可以帮助我删除文档和更新数据库。 我的第一个文件包含一个带有删除按钮的表单和一个名为remove()的javascript函数。第二个php页面将删除它不会返回任何结果的文件。

Remove.php的代码(在调用remove()函数时):

$Doc=$_GET['Doc']; //Value get from remove() function
$ID= intval($_POST['ID']);
$FirstReport= $_POST['FirstReport'];
$SecReport = $_POST['SecReport'];

$FirstReportPath= $_POST['FirstReportPath'];
$SecReportPath = $_POST['SecReportPath '];

$DB = new PDO('sqlite:/database/Student.db');
//If i click remove firstreport button, i'll check it to see if it's the same
if(($Doc) == ($FirstReport))
{
   $result= $DB->query("Update Student set FirstReport='No' WHERE ID=".$ID);    
//This unlink should remove the document file from the path.
    unlink($FirstReportPath);
echo "success";
 }
 else
 {
    //same code repeated as if statement
 }

Javascript功能

 function RemoveDoc(Doc)
 {
 xmlhttp=new XMLHttpRequest();
 xmlhttp.open("GET","functions/Resubmit.php?Doc="+Doc,true);
 xmlhttp.send();
 document.getElementById("RemoveMsg").innerHTML=xmlhttp.responseText;
 return false;
 }

我确实尝试提醒(Doc)并且文档名称确实显示但是在第二个remove.php上,它没有运行任何编码。试过“GET”/“POST”也是一样的结果。好心提醒。

2 个答案:

答案 0 :(得分:3)

看起来您发送了一个帖子请求,但是在网址中发送了一个$ GET变量的文档名称。

切换到get请求:

function RemoveDoc(Doc)
 {
 xmlhttp=new XMLHttpRequest();
 xmlhttp.open("GET","functions/Resubmit.php?Doc="+Doc,true);
 xmlhttp.send();
 document.getElementById("RemoveMsg").innerHTML=xmlhttp.responseText;
 return false;
 }

或将文档名称作为post参数发送:

function RemoveDoc(Doc)
 {
 xmlhttp=new XMLHttpRequest();
 xmlhttp.open("POST","functions/Resubmit.php",true);
 xmlhttp.send("Doc="+Doc);
 document.getElementById("RemoveMsg").innerHTML=xmlhttp.responseText;
 return false;
 }

此外,您不等待服务器的响应。

function RemoveDoc(Doc)
{
xmlhttp=new XMLHttpRequest();
xmlhttp.open("POST","functions/Resubmit.php",true);
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("RemoveMsg").innerHTML=xmlhttp.responseText;
    }
  }
 xmlhttp.send('Doc='+Doc);
return false;
}

答案 1 :(得分:2)

您必须从$ _POST superglobal发送要发布的值广告。只需修改Javascript代码
即可

function RemoveDoc(Doc,FirstReport,SecReport,FirstReportPath,SecReportPath)
{
 xmlhttp=new XMLHttpRequest();
 xmlhttp.open("POST","functions/Resubmit.php",true);
 xmlhttp.onreadystatechange=function(){
   if (xmlhttp.readyState==4 && xmlhttp.status==200)
      document.getElementById("RemoveMsg").innerHTML=xmlhttp.responseText;
 }
 xmlhttp.send("Doc="+Doc+"&FirstReport="+FirstReport+"&SecReport="+SecReport);
 //do for others also in the same way
 return false;
}