处理后不会自动重新加载PHP

时间:2013-11-20 13:54:02

标签: javascript php jquery mysql

嗨我有一个包含数据的PHP文件。该值传递给另一个成功处理它的php文件。但是第一个php文件没有刷新来更新新结果。它必须手动完成。任何人都可以告诉我我错在哪里或需要做什么。请在下面找到我的代码。

PHP代码(第1页,index.php)

function display_tasks_from_table() //Displayes existing tasks from table
{
 $conn = open_database_connection();
 $sql = 'SELECT id, name FROM todolist';

 mysql_select_db('todolist'); //Choosing the db is paramount

 $retval = mysql_query( $sql, $conn );
 if(! $retval )
 {
   die('Could not get data: ' . mysql_error());
  }
  echo "<form class='showexistingtasks' name='showexistingtasks' action='remove_task.php' method='post' >";

 while($row = mysql_fetch_assoc($retval))
{
 echo "<input class='checkbox' type='checkbox' name='checkboxes{$row['id']}' value='{$row['name']}' onclick='respToChkbox()' >{$row['name']}  <img src='images/show_options.gif' /><br>";       
} 
 echo "</form>";
 echo "<label id='removeerrormsg'></label>";
  close_database_connection($conn);
  }

找到所选值的Javascript代码:

var selVal; //global variable

function respToChkbox()
 {
var inputElements = document.getElementsByTagName('input'),
input_len = inputElements.length;

for (var i = 0; i<input_len; i++) 
{

    if (inputElements[i].checked === true)
    {
        selVal = inputElements[i].value;

    }

   }
  }

将值传递给另一个页面的jQuery代码(remove_Task.php):

$(document).ready(function() {   
$(".checkbox").click(function(){
$.ajax({
type: "POST",
url: "remove_task.php", //This is the current doc
data: {sel:selVal, remsubmit:"1"},
success: function(data){
    //alert(selVal);
    //console.log(data);
}
});
});        
});

PHP代码(第2页,remove_task.php);

session_start();
error_reporting(E_ALL);ini_set('display_errors', 'On');


 $task_to_remove = $_POST['sel'];
 function remove_from_list() //Removes a selected task from DB
 {
$db_connection = open_database_connection();
global $task_to_remove;
mysql_select_db('todolist');
$sql = "DELETE FROM todolist WHERE name = "."'".$task_to_remove."'";
if($task_to_remove!='' || $task_to_remove!=null) 
{
mysql_query($sql, $db_connection);
}
    close_database_connection($db_connection);
    header("Location: index.php");
    }

     if($task_to_remove != "") {
     remove_from_list();
     }

选定的值将被删除,但index.php上的显示不会自动更新。我必须手动刷新才能看到更新的结果。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:1)

通过调用header("Location: index.php");,您不会重定向主页面。您发送了一个ajax请求 - 您可以在后台打开新页面时考虑它,因此此代码将页面重定向到index.php。

解决任务的更好方法是将状态返回到成功函数,并删除从数据库中删除的项目。

success: function(data){
    if(data.success){
        //remove deleted items
    }
}