未定义的索引:AJAX中的id,Code Igniter

时间:2016-01-18 08:49:00

标签: javascript php ajax codeigniter

当我在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;
        });

4 个答案:

答案 0 :(得分:0)

设置您的ID字段:

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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

使用'data-id'

,而不是使用ID来存储 foto_id

你可以做的是给他们相同的类,不同的href值,'数据值'和1个常见的On Click功能。

所以,你的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;
    });

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