【问题标题】:Undefined index: id in AJAX, Code Igniter未定义索引:AJAX 中的 id,Code Igniter
【发布时间】:2016-01-18 08:49:00
【问题描述】:

当我在 AJAX 中调用函数时,显示消息错误“未定义索引:id”,但如果在视图中我有一个按钮,它可以工作,但是当我有两个按钮时显示此错误。有什么问题?我需要为此创建一个数组或任何解决方案吗?

<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;
        });

【问题讨论】:

  • 在浏览器控制台中使用使用 firebug 的检查元素来检查 id 值是否存在。然后在 js 代码中提醒你 id。

标签: javascript php ajax codeigniter


【解决方案1】:

像这样设置你的 id 字段:

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

【讨论】:

    【解决方案2】:

    我不确定,但一旦使用这种类型:-

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

    【讨论】:

      【解决方案3】:

      1) 某些方法是错误的,例如 id 在整个页面中应该是唯一的,如果某个属性具有 id,则任何其他属性都不应该是相同的 id。

      2) print_r($fotos_concurso,1);检查'id'索引是否存在

      3) 你可以查看控制台日志,每个都应该收集正确的“id”

      【讨论】:

        【解决方案4】:

        您出现此错误的原因可能是因为您对两个按钮使用了相同的 ID (#)。

        不要使用 ID 来存储您的 foto_id 值,而是使用 'data-id'

        你可以做的是给他们相同的类,不同的href值,'data-value'和1个通用的点击功能。

        所以,你的 HTML 将是这样的:

        btn_foto 是两个按钮中的通用类,而不是 id,而是使用 data-id

        <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 为:

        $('.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;
            });
        

        注意:'data-value' 是数据属性,它们应该优先于 'classes' 和 'ids' 来存储值。 “数据属性”可以是唯一的或相同的值,因为它们没有任何限制。

        【讨论】:

        • 同样的错误,我的控制器之一是这个公共函数 aprobar_foto () { if (empty($this->data['logged_in']) || !in_array('fotos_concurso', $this- >data['permisos'])) { // 将它们重定向到登录页面 redirect('admin/login', 'refresh'); } $this->data['seccion'] = '照片'; $this->fotosconcurso->aprobar_foto($_POST['id']); }
        • 正如你所说,你的错误是 "Undefined index: id" ,那么你的问题是因为 id。如果您遵循我上面的代码,则至少不应出现“未定义索引:id”错误。确保: 1) 鉴于您使用的是 'data-id' 而不是 'id' 2) 在 Javascript 中: .attr('data-id') 而不是 .attr('id')
        • 没关系,复制你的例子还是一样的错误。
        • 嗯。您可以使用 FireBug 并检查标头,为 'id' 发送什么值?如果它为空白,您可以在 View 上工作,如果它不是空白,则问题必须在 Controller 中。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-25
        • 2015-04-06
        • 1970-01-01
        • 2021-08-22
        • 2015-07-29
        • 1970-01-01
        相关资源
        最近更新 更多