php - jQuery AJAX 问题 - 页面在提交时不断刷新且数据未发送

标签 php jquery mysql ajax pdo

我正在尝试使用 PHP 和 MySQL 创建动态 AJAX 函数,但到目前为止收效甚微。其目的是在不刷新页面或更改到另一个页面的情况下更新数据库中的记录。

在带有表单的页面上,我有以下代码:

// jQuery

<script type="text/javascript">
<?php 

$sql = "SELECT * from pm_schedule";
$result = $pdo->query($sql);

foreach ($result as $row) 
{
echo 
"$(document).ready(function() {
 $('#updatebtn".$row['id']."').click(function() {
 $('#result".$row['id']."').show('slow').delay(4000).hide('slow')
 $.post('process.php', $('#updateform".$row['id']."').serialize()) 
 });    
return false;   
});";
}
?>
</script> 

// form

$sql = "SELECT * from pm_schedule";
$result = $pdo->query($sql);
foreach ($result as $row) 
{
echo 
'<form id="updateform'.$row['id'].'">
<div class="tbl_header">'.$row['task'].'</div>

Due Date: 
<script>
$(function() {
$( "#datepicker'.$row['id'].'" ).datepicker({ minDate: -0,  
dateFormat: \'dd/mm/yy\', maxDate:  new Date(2013, 1,22) })
});
</script>
<input type="text" id="datepicker'.$row['id'].'" style="width: 100px; height: 10px;" value="'.$row['duedate'].'" name="duedate"/>&nbsp;

Status:
<select style="width: 125px;" name="status">
<option>'.$row['status'].'</option>
<option>----</option>
<option>Pending</option>
<option>In Progress</option>
<option>Complete</option>
</select>
&nbsp;

<input type="hidden" name="id" value="'.$row['id'].'">
<input type="submit" id="updatebtn'.$row['id'].'" value="Update" 
style="width: 100px;"/>
</form>

<div id="result'.$row['id'].'" style="display: none; color: red">
Update successful!
</div>
<p>';}

在负责处理的页面(process.php)上,我有以下代码:

<?php
$name = mysql_real_escape_string($_POST["name"]);
$status = mysql_real_escape_string($_POST["status"]);
$id = mysql_real_escape_string($_POST["id"]);

$sql = "UPDATE pm_schedule SET name=?, status=?, id=? WHERE id=?";
$q = $conn->prepare($sql);
$q->execute(array($name,$status,$id));
?>

我做错了什么?

最佳答案

return false 是在 $(document).ready 上调用的函数中,而不是在点击处理程序中,所以我猜这会导致表单提交完成点击处理程序后。也许将语句移至一行:

echo 
"$(document).ready(function() {
   $('#updatebtn".$row['id']."').click(function() {
     $('#result".$row['id']."').show('slow').delay(4000).hide('slow');
     $.post('process.php', $('#updateform".$row['id']."').serialize());
     return false;
   }); 
 });";

正如 ripa 所说,多一些 ; 应该会有帮助。

关于php - jQuery AJAX 问题 - 页面在提交时不断刷新且数据未发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14741544/

相关文章:

php - 如何使用 SQL 注入(inject)提取登录信息?

javascript - 当用户离开网站时添加到 Apache 日志文件

php - jQuery 插件可以在 cakePHP 中使用吗?

php - ( session 与 cookie 的缺点

php - mysql全文搜索问题

javascript - HTML 表单验证标签放置

jquery - 在对话框中动态创建文本

jquery - 在phonegap应用程序中无法获取数据(图像和文本)

mysql匹配选择像主题标签,没有全文

php - 将 PHP 打印为 Javascript