我有以下代码:
<?php
$query=mysqli_query($mysqli, "SELECT assignment,a_id FROM assignments WHERE groupid='".$groupid."'");
$assignments = array(); // create empty assignments array
while ($row=mysqli_fetch_array($query)){
echo'<td class="columnname" id="'.$row['a_id'].'" contenteditable="true">'.$row['assignment'].'</td>';
$assignments[$row['a_id']] = $row['assignment']; // add assignment to array
}
?>
<script>
$('.columnname').keyup(function() {
delay(function(){
var text= $(this).text();
var id= $(this).attr('id')
$.ajax({
type:"POST",
url:"updateassignment.php",
data:{text:text, id:id},
success:function(data){
console.log('success bro!');
}
});
}, 500 );
});
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
</script>
基本上发生了什么,是我有一个满足,并且无论什么时候是keyup(这意味着每当用户输入信息时),它都会将数据发布到更新值的php文件updateassignment.php。但是,它似乎不适合我,它给了我成功的结果,但没有显示错误。它有点没有从字段中获取值,但正如你所看到的,我使用$(this)引用了columnname类(由php动态生成)
php updateassignment文件代码如下:
<?php
include_once("config.php");
if (isset($_POST['id']) && isset($_POST['text'])) {
$id=$_POST['id'];
$text=$_POST['text'];
$query=mysqli_query($mysqli, "UPDATE assignments SET assignment='$text' WHERE a_id='$id'")or die(mysqli_error($mysqli));
}
?>
我有一种感觉,这并不是指正确的元素,因此可以理解的ajax无法获取正确的值。
答案 0 :(得分:1)
我找到了答案。
这是因为我在延迟函数中定义了ajax,所以它不会引用列名。解决这个问题的方法是在延迟函数之外定义$(this)。