PHP内部自动刷新DIV标记中的表单将不起作用

时间:2014-12-18 19:47:46

标签: javascript php mysql forms sql-update

我有以下两页。 index.php包含通过PHP的purchases_pending.php。页面第一次加载表单时效果很好但是当DIV(#pp)在10秒后刷新时,FORM不起作用。这有解决方案吗?或者,如果我可以通过AJAX完成,有人可以帮助我使用代码。正如你看到我的代码,你可能知道我是一个初学者。 提前谢谢。

的index.php

<script type="text/javascript">
function update(){
    $('#pp').load('/status/purchases_pending.php');
}
setInterval( update, 10000 );
</script>
<div class="content">
<div class="content_left">
<p>
<h3>Pending Purchases</h3>
<div class="user_content"><div id="pp"><?php include ($purchases_pending); ?></div></div>
</p>

purchases_pending.php

<?php
$CONFIG = $_SERVER["DOCUMENT_ROOT"]. "/config/";
include($CONFIG. "pages.php");
include($db);

$sql = "SELECT * FROM account WHERE status='Pending' AND type='Purchase'";
$query = mysqli_query($conn, $sql);

if (mysqli_num_rows($query) > 0) {

echo '<table>';
echo '<tr> <th align="left">Party</th> <th>Box</th> <th>Rate</th> <th>Status</th> </tr>';
while ($result = mysqli_fetch_assoc($query)) {

$id = $result['id'];
$party = $result['party'];
$box = $result['box'];
$rate = $result['rate'];
$amount = $result['amount'];
echo '<form action="" method="post">';
echo '<tr>';
echo '<td>' . $party . '</td>';
echo '<td align="center">' . $box . '</td>';
echo '<td align="right">' . $rate . '</td>';
echo '<td align="center"><input type="checkbox" name="status[]" id="status[]" value="' . $id . '" /></td>';
echo '</tr>';
}
echo '</table>';
echo '<input type="submit" name="submit" value="Completed" class="input" />';
echo '</form>';
}
else {
    echo 'Hooray...No pending purchases';
}

if(isset($_POST['submit']) && $_POST['submit']!="") {
$status = $_POST['status'];
$count = count($_POST['status']);
for($i=0;$i<$count;$i++) {
$update_purchases = "UPDATE account SET status='Completed', user_confirm='$user_confirm' ,user_confirm_time=current_timestamp WHERE id='$status[$i]'";
$query_purchases = mysqli_query($conn, $update_purchases);
}
header ('location:/');
}
?>

2 个答案:

答案 0 :(得分:0)

JS加载需要在document ready才能工作。

简写

$(function() { 

    var update = function() {              

       $('#pp').load('/status/purchases_pending.php');

       setTimeout(update, 10000);
    }

    update();

});

将此代码移至index.php,因为页面中不再存在此代码,因为在替换div时会删除它#pp

if(isset($_POST['submit']) && $_POST['submit']!="") {
    $status = $_POST['status'];
    $count = count($_POST['status']);
    for($i=0;$i<$count;$i++) {
    $update_purchases = "UPDATE account SET status='Completed', user_confirm='$user_confirm' ,user_confirm_time=current_timestamp WHERE id='$status[$i]'";
    $query_purchases = mysqli_query($conn, $update_purchases);
}

要从服务器解释php呈现为html,它从上到下读取。 因此,当js插入它时,它不会插入代码,而是代码的呈现。 Ajax用于发送数据,但在加载时除了给我一个表单之外,没有其他数据被发送。 该帖子不存在,因为它已经呈现。当使用include时,它被“插入”作为要执行的代码的一部分,从而起作用。

答案 1 :(得分:0)

在jquery

之外加载JS函数
<script>
  function update(){
    $('#pp').load('/status/purchases_pending.php');
  }
</script>

 $( document ).ready(function() {   
    setInterval( update, 10000 );

 });