2015-01-06 4 views
-1

У меня есть следующий код:Ajax Публикация данных в PHP

<?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> 

В основном то, что происходит, является то, что у меня есть contenteditable и всякий раз, когда это KeyUp (что означает каждый раз, когда пользователь вводит в информации), он будет размещать данные в файл php updateassignment.php, который обновляет значения. Однако, похоже, что это не работает для меня, это дает мне результат успеха, но не показывает ошибки. Его вид не получает значения из полей, но, как вы можете видеть, im использует $ (this), который ссылается на класс columnname (который генерируется динамически по php)

Код файла обновления php update ниже:

<?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 contenteditable не может получить правильное значение.

ответ

1

Я нашел ответ.

Это потому, что я определил ajax это внутри функции задержки, поэтому он не будет ссылаться на имя столбца. Способ решить это - определить $ (this) вне функции задержки.

+0

отличная работа чувак! –