Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jQueryAjax问题-页面在提交和未发送数据时保持刷新_Php_Jquery_Mysql_Ajax_Pdo - Fatal编程技术网

Php jQueryAjax问题-页面在提交和未发送数据时保持刷新

Php jQueryAjax问题-页面在提交和未发送数据时保持刷新,php,jquery,mysql,ajax,pdo,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

我正在尝试使用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>';}
<?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));
?>
//jQuery

地点
在这里

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;   
     });";
 }

返回false
$(document.ready
上调用的函数中,而不是在click处理程序中,因此我猜这会导致表单在完成clickhandler后仍然提交。也许将语句上移一行:

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;
   }); 
 });";

正如里帕所说,还有一些
也应该很有帮助。

事情有点难以追踪,但我认为您没有采取任何措施来防止在单击提交按钮时出现默认表单提交行为。如果我正在阅读上面的内容,从点击处理程序返回false将解决您的问题。没错,您可以尝试通过添加“return false;”禁用发布表单,或者将按钮类型从“submit”更改为“button”因为您不想发布表单。我已经这样做了,发布已被禁用,但数据似乎没有在数据库中更新。您确定代码正在点击
process.php
?控制台中是否有错误?
$conn
在哪里定义?