使用codeigniter和jquery插入后如何获取最后插入的id

时间:2016-09-28 13:02:33

标签: php jquery mysql ajax codeigniter

请帮我介绍如何使用codeigniter和jquery从数据库中获取最后一个插入的id。我想要的是在插入后获取最后插入的id。我正在使用jquery来插入数据。我不知道如何做到这一点。非常感谢。

SCRIPT

$('#add-tag').click(function () {
    var lang = $('#lang').val();
    var tag  = $('#tag').val();

    var data = {
        tag: tag,
        lang: lang
    }

    if (tag === '') {
        $('.error').html('<h4><i class="glyphicon glyphicon-info-sign">' +
            '</i> Field cannot be empty!</h4>').addClass('bounceIn').show();

        $('.error').delay(3000).fadeOut();
    } else {
        $.ajax({
            url: "<?= site_url('blog/add_tag'); ?>",
            type: 'POST',
            data: data,
            success: function (result) {
                //display message if successful
                $('.message').html('<h4><i class="glyphicon glyphicon-ok">' +
                    '</i> Tag has been added</h4>').addClass('bounceIn').show();
                $('.message').delay(3000).fadeOut();
                $('#tag').val('');

                $('#tags').append('<a class="tags animated fadeInDown">' +
                    '<span class="remove-tag" id="remove-tag' + lid + '">' +
                    '</span></span> ' + tag + '</a>');

                window.setTimeout(function () {
                    location.reload();
                }, 2000);
            }
        });
    }
});

查看

<div class="row">
    <div class="col-md-12 col-sm-12 col-xs-12">
        <div id="add-tag-form" class="display-none relative">
            <div class="well well-sm">
                <div class="row">
                    <div class="col-md-12 col-sm-12 col-xs-12">
                        <h5>Add Tag</h5>
                        <input type="text" id="tagLastID" class="form-control" placeholder="Tag Last ID" readonly>
                        <input type="hidden" id="lang" class="form-control" placeholder="Lang" required value="<?= $lang; ?>">
                        <input type="text" id="tag" class="form-control" placeholder="Tag" required>
                        <br />
                        <button id="add-tag" class="btn col-md-12 col-sm-12 col-xs-12">Add Tag</button>
                        <div class="text-center"><a id="close-tag">cancel</a></div>
                    </div>
                </div>
            </div>
        </div>
        <button id="add-tag-btn" class="btn col-md-12 col-sm-12 col-xs-12">Add Tag</button>

    </div>
</div>

CONTROLLER

public function add_tag() {
    $this->Mblog->addTag();
}

MODEL

public function addTag() {
    $lang = $this->input->post('lang');
    $tag  = $this->input->post('tag');

    $data = array(
        'tags' => $tag,
        'lang' => $lang
    );

    $this->blog->insert('tags', $data);

    return $this->blog->insert_id();
}

3 个答案:

答案 0 :(得分:1)

如果你问如何将数据从控制器返回到jQuery那么是的,这就是答案。

用此

替换您的控制器代码
public function add_tag() {
     $insert_id = $this->Mblog->addTag();
     echo(json_encode(array("insert_id"=>$insert_id)));
}

echo的结果将出现在jQuery.ajax的成功中。

答案 1 :(得分:1)

添加返回控制器功能或回显结果如下:

public function add_tag() {
    return $this->Mblog->addTag();
}

public function add_tag() {
    echo json_encode(['data' => $this->Mblog->addTag()]);

    exit;
}

然后尝试修改dump并查看ajax成功响应:

$.ajax({
    url: "<?= site_url('blog/add_tag'); ?>",
    type: 'POST',
    data: data,
    dataType: 'json', // this will convert your results to json by default
    success: function (result) {
        // You should get the json result
        console.log(result.data);

        // Your regular logic to handle result
    }, 
    fail: function(res) {
        console.log(res); // will log fail results
    }
});

试试这些并告诉我们这是否适合您。

答案 2 :(得分:1)

您已经从模型中返回了id,因此在您的控制器中,您唯一需要做的就是回显结果。

public function add_tag() {
          echo $this->Mblog->addTag();
        }

然后在你的jquery中result将是你从控制器回应的内容。