2016-01-18 6 views
1

, когда я вызываю функцию в AJAX, выдает сообщение об ошибке «Undefined index: id», но если в представлении у меня есть одна кнопка, это работа, но когда у меня есть две кнопки, мне эта ошибка. В чем проблема? Мне нужно создать массив или любое решение для этого?Неопределенный индекс: id в AJAX, Code Igniter

<tbody> 
       <?php foreach ($fotos_concurso as $fotos) { ?> 
       <tr> 
        <td><img width="200" height="200" src="<?php echo base_url('/uploads/'.$fotos['nombre_archivo']); ?>"></td> 
        <td><?php echo $fotos['nombre']; ?></td> 
        <td><a class="aprobar_foto" href="<?= base_url('admin/aprobar_foto') ?>" id="<?php echo $fotos['id'] ?>" title="aprobar"><i class="icon-trash"></i></a></td> 
        <td><a class="desaprobar_foto" href="<?= base_url('admin/desaprobar_foto') ?>" id="<?php echo $fotos['id'] ?>" title="desaprobar"><i class="icon-trash"></i></a></td> 
       </tr> 
       <?php } ?> 
      </tbody> 

И код AJAX

$('.aprobar_foto').on('click', function() { 
      q = $(this); 
      if (confirm('¿Quieres aprobar la foto?')) { 
       $url = q.attr('href'); 
       $.ajax({ 
        type: "post", 
        url: $url, 
        cache: false, 
        data: "id=" + q.attr('id'), 
        fail: function() { 
         alert('Ha habido un error al borrar el registro'); 
        }, 
        success: function (redir) { 
         window.location = redir; 
        } 
       }); 
      } 
      return false; 
     }); 

     $('.desaprobar_foto').on('click', function() { 
      q = $(this); 

      if (confirm('¿Quieres desaprobar la foto?')) { 
       $url = q.attr('href'); 
       $.ajax({ 
        type: "post", 
        url: $url, 
        cache: false, 
        data: "id=" + q.attr('id'), 
        fail: function() { 
         alert('Ha habido un error al borrar el registro'); 
        }, 
        success: function (redir) { 
         window.location = redir; 
        } 
       }); 
      } 
      return false; 
     }); 
+1

использовать элемент проверки с помощью firebug в консоли браузера, чтобы проверить значение id. затем сообщите об этом id в js-коде. –

ответ

0

Установите поле идентификатора, как это:

var id = q.attr('id'); 
data: {id: id}, 
+0

Не работает, такая же ошибка сообщения. – NARTONIC

0

я не уверен, но когда-то использовать этот тип: -

var ids = q.attr('id'); 
data: {id: ids}, 
0

1) Некоторые подход неверен, поскольку идентификатор должен быть уникальным на всей странице, если какой-либо атрибут имеет id, ни один другой атрибут не должен быть одним и тем же идентификатором.

2) print_r ($ fotos_concurso, 1); проверить «идентификатор» индекс существует или нет

3) Вы можете проверить на лог консоли, каждый из них должен собрать правильный «идентификатор»

0

Причина вы имеете эта ошибка, вероятно, потому, что вы используете те же идентификаторы (#) для обе кнопки.

Вместо использования ID для хранения foto_id значения, используйте «данных идентификатор»

Вы можете сделать, это дать им то же класс, другое HREF значения, и «данные стоимость» и 1 общего On Click функция.

Итак, ваш HTML будет выглядеть следующим образом:

btn_foto общий класс в обе кнопки, и вместо ид, данных идентификатор используется

<tbody> 
      <?php foreach ($fotos_concurso as $fotos) { ?> 
      <tr> 
       <td><img width="200" height="200" src="<?php echo base_url('/uploads/'.$fotos['nombre_archivo']); ?>"></td> 
       <td><?php echo $fotos['nombre']; ?></td> 
       <td><a class="btn_foto" href="<?= base_url('admin/aprobar_foto') ?>" data-id="<?php echo $fotos['id'] ?>" title="aprobar"><i class="icon-trash"></i></a></td> 
       <td><a class="btn_foto" href="<?= base_url('admin/desaprobar_foto') ?>" data-id="<?php echo $fotos['id'] ?>" title="desaprobar"><i class="icon-trash"></i></a></td> 
      </tr> 
      <?php } ?> 
     </tbody> 

и ваш Ajax Javascript as:

$('.btn_foto').on('click', function() { 
     q = $(this); 
     if (confirm('¿Quieres aprobar la foto?')) { 
      $url = q.attr('href'); 
      $.ajax({ 
       type: "post", 
       url: $url, 
       cache: false, 
       data: "id=" + q.attr('data-id'), 
       fail: function() { 
        alert('Ha habido un error al borrar el registro'); 
       }, 
       success: function (redir) { 
        window.location = redir; 
       } 
      }); 
     } 
     return false; 
    }); 

ПРИМЕЧАНИЕ: «данные -value '- атрибуты данных, и они должны быть предпочтительнее «классов» и «идентификаторов» для хранения значений. «Данные-атрибуты» могут быть уникальными или одинаковыми значениями, поскольку у них нет каких-либо ограничений.

+0

Такая же ошибка, один из моих контроллеров - это Публичная функция aprobar_foto() { \t \t if (empty ($ this-> data ['logged_in']) ||in_array ('fotos_concurso', $ this-> data ['permisos'])) {// перенаправлять их на страницу входа в систему \t \t \t redirect ('admin/login', 'refresh'); \t \t \t \t $ this-> data ['seccion'] = 'Fotos'; \t \t $ this-> fotosconcurso-> aprobar_foto ($ _ POST ['id']); \t} – NARTONIC

+0

Как вы сказали, ваша ошибка: «Undefined index: id», тогда ваша проблема связана с идентификатором. Если бы вы следовали, мой вышеприведенный код, вы не должны получать ошибку «Undefined index: id» atleast. Удостоверьтесь: 1) В поле зрения вы используете 'data-id' вместо 'id' 2) в Javascript: .attr ('data-id') вместо .attr ('id') –

+0

Все нормально , Просто скопируйте свой пример и по-прежнему ту же ошибку. – NARTONIC

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