Ajax将数据发布到PHP

时间:2015-01-06 03:21:09

标签: 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)){
            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无法获取正确的值。

1 个答案:

答案 0 :(得分:1)

我找到了答案。

这是因为我在延迟函数中定义了ajax,所以它不会引用列名。解决这个问题的方法是在延迟函数之外定义$(this)。