Ajax将数据发布到PHP
我有以下代码:Ajax将数据发布到PHP,php,jquery,ajax,Php,Jquery,Ajax,我有以下代码: <?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)){
<?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>
我找到了答案
这是因为我在delay函数中定义了ajax,所以它不会引用columnname。解决这个问题的方法是在delay函数之外定义$(this)
<?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));
}
?>