2013-09-18 3 views
0

Я обновляю базу данных всякий раз, когда пользователь нажимает подобную кнопку. Обновление успешно выполнено, но проблема заключается в обновлении нового полученного значения из базы данных.Обновление значения на странице из базы данных с помощью ajax

функция управления, на котором Аякса размещает данные:

public function plusrepo() 
{ 
    if($this->input->is_ajax_request()) 
    { 
     $this->load->model('themodel'); 
     $rep['updated'] = $this->themodel->addrepo($this->input->post('resid')); 
     echo $rep['updated'][0]." <span>Reputation</span>"; 
    } 
} 

Это, как я выбрать из таблицы и возвращает массив результатов.

$this->db->select('repo'); 
$this->db->from('restaurants'); 
$this->db->where('id', $id); 
$result = $this->db->get(); 
return $result->result_array(); 

Моя функция Ajax на успех делает это:

success: function(){ 
     alert("Success"); 
     $(this).addClass('.up_arrow').removeClass('.up_arrowed'); 
     $('.rep_count').html(data); 
     } 

Что не так? Я смущен.

Edited Это полная функция AJAX

$('.up_arrow').each(function() { 
    $(this).click(function(event) { 
     event.preventDefault(); 
     var resid = $(this).attr('name'); 

     var post_data = { 
      'resid' : resid, 
      '<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>' 
     }; 

     if(resid){ 
      $.ajax({ 
       type: 'POST', 
       url: "/ci_theyaw/restaurants/plusrepo", 
       data: post_data, 
       success: function(data){ 
        console.log(data); 
        // alert(data); 
        // $(this).addClass('.up_arrow').removeClass('.up_arrowed'); 
        // $('.rep_count').html(data); 
       }, 
       error: function (xhr, ajaxOptions, thrownError) { 
        alert(xhr.status); 
        console.log(xhr.responseText); 
        alert(thrownError); 
       } 
      }); 
     } 
    }); 
}); 
+0

Является ли ваша текущая проблема идет с вашей стороны сервера или вашего переднего конца? Вызывается обработчик '.success' (т. Е. Вызывается вызов' alert() ')? Или ваш контроллер 'echo' правильные данные? Лучше всего изолировать проблему. – JofryHS

+0

Нет предупреждения не вызывается. Проблема в том, что я думаю на стороне сервера. –

+0

Как я могу проверить, что мой контроллер просто отозвался? –

ответ

1

Вам необходимо передавать данные функции успеха, как это:

success: function(data){ 

Так полный Ajax успеха функция обратного вызова будет:

success: function(data){ 
    alert("Success"); 
    $(this).addClass('.up_arrow').removeClass('.up_arrowed'); 
    $('.rep_count').html(data); 
} 

также:

$this->db->select('repo'); 
$this->db->from('restaurants'); 
$this->db->where('id', $id); 
$this->db->limit(1); 
$result = $this->db->get(); 
print_r($result);//For testing 
//echo $result['repo']; // For working code 
+0

Это все еще не повезло? –

+0

Что вы получаете, когда 'alert (data);'? –

+0

Ошибка в моей функции ajax возвращает 'alert (xhr.status)' или 'alert (thrownError)' как 0. –

1

Изменение,

$this->db->select('repo'); 
$this->db->from('restaurants'); 
$this->db->where('id', $id); 
$result = $this->db->get(); 
return $result->result_array(); 

К,

$this->db->select('repo'); 
$this->db->from('restaurants'); 
$this->db->where('id', $id); 
$result = $this->db->get(); 
$row=$result->result_array(); 
return $row['repo']; 

И

 success: function(){ 
     alert("Success"); 
     $(this).addClass('.up_arrow').removeClass('.up_arrowed'); 
     $('.rep_count').html(data); 
    } 

К,

 success: function(data){ 
     alert("Success"); 
     $(this).addClass('.up_arrow').removeClass('.up_arrowed'); 
     $('.rep_count').html(data); 
    } 

Здесь Вы забыли передать данные к функции успеха.

+0

Я думаю, что это вернет мне то, что мне нужно, но все еще не повезло с обновлением на странице , –

+0

Проверьте обновленный ответ. – devo

+0

Да заметил, что, но все же часть ошибки моего ajax возвращается 0 как xhr.status/thrownerror –

1

Try:

$this->db->select('repo'); 
$this->db->from('restaurants'); 
$this->db->where('id', $id); 
$result = $this->db->get()->row_array(); 
return $result['repo']; 

echo $rep['updated']." <span>Reputation</span>"; 

Изменение:

url: "<?=base_url('restaurants/plusrepo')?>", 
+0

Отредактировано выше, ответьте, попробуйте один раз сменить его –

+0

попробовал это .. по-прежнему та же ошибка –

Смежные вопросы