Добавление / удаление элемента и обновление его атрибута через AJAX - PullRequest
0 голосов
/ 28 января 2011

Я создаю небольшое приложение, которое позволит пользователю добавлять / удалять студентов из курса.Каждый раз, когда я добавляю / удаляю курс, база данных обновляется, и я обновляю общее количество курсов для пользователя.Когда я добавляю студента в курс, он работает нормально, но когда я иду, чтобы удалить их, мне возвращается 0 (из моей функции модели PHP).Я считаю, что это может быть проблема с JQuery, я думаю, что мне может понадобиться использовать клон?Поэтому я извиняюсь за такой длинный пост, просто хотел убедиться, что у вас, ребята, достаточно кода, чтобы посмотреть.Вот мой код jQuery, который добавляет и удаляет пользователя к курсу:

function addUserToClass(user)
{

 //creates the a data string to send to the controller with the user's id and the course id
 var postString = "courseid="+$("#course option:selected").val()+"&uid="+user.find('input').val();

 //adds the user to the course list in the database
 $.post('index.php/admin/addUserToCourse',postString);

  $("#courseList").append(user);
  $('#courseList .addUser').text('(-)').removeClass('addUser').addClass('removeUser'); 
}

//removes a user from the selected course in the database as well as on the screen
function removeUserFromClass(user)
{
 var postString = "courseid="+$("#course option:selected").val()+"&uid="+user.find('input').val();

 //removes the user fromt the course in the database
 $.post('admin/removeUserFromCourse',postString);

 $(user).remove();
 $('#usertable').append(user);
 $('#usertable .removeUser').text('(+)').removeClass('removeUser').addClass('addUser'); 



}

Вот мой jQuery, который обновляет количество курсов, в которых он находится:

function updateUserCourses(uid)
{
var postString = 'uid='+uid.siblings(':input').val();

  $.post('index.php/admin/getUsersCourses', postString , function(data){

   data = jQuery.parseJSON(data);
   uid.siblings('.internalCounter').text(data.internal);
   uid.siblings('.externalCounter').text(data.external);

  })

}

Не уверен, есливам это нужно, но мой вызываемый PHP (контроллер codeigniter):

 function getUsersCourses()
 {
  $this->load->model('course_model');
  $courses = $this->course_model->getUsersCourses($_POST['uid']);

  echo json_encode($courses);

 }

И моя модель:

  function getUsersCourses($uid)
     {
      $external = array();
      $internal = array();
      $final = array();
      //Selects all of the courses the user has been added to
      $usersCourses = $this->db->query("SELECT courseid FROM final_course_list WHERE uid='{$uid}'");

  //If they have courses, proceed to process them
  if ($usersCourses->num_rows() > 0)
  {
   //For every course they have, we get the category of the course
   foreach($usersCourses->result() as $row)
   {
    $courseCat = $this->db->query("SELECT category FROM courses WHERE id = '{$row->courseid}'")->row_array();

    if($courseCat['category'] == 'External Topics')
    {
     array_push($external, $courseCat);
    }
    else if($courseCat['category'] == 'Internal Topics')
    {
     array_push($internal, $courseCat);
    }
   }

   //adds the internal and external amount of classes to one array
   $final['internal'] = count($internal);
   $final['external'] = count($external);
   $result = $final;
  }
  else
  {
   $result = 0;
  }

  return $result;

 }

Ответы [ 2 ]

0 голосов
/ 28 января 2011

Нет ничего хуже глупых ошибок, которые нужно исправить навсегда. Я не думаю, что с моим JS было что-то не так, это была моя модель PHP. Вместо возврата 0 мне нужно было вернуть массив

array("internal"=>0,"external"=>0);

0 голосов
/ 28 января 2011

Не следует removeUserFromClass читать:

$.post('index.php/admin/removeUserFromCourse',postString);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...