首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Codeigniter输入库不识别ajax post数据

Codeigniter输入库不识别ajax post数据
EN

Stack Overflow用户
提问于 2019-09-17 16:21:22
回答 1查看 69关注 0票数 0

我正在尝试用CodeIgniter和引导模式构建一个文件管理器(作为文件管理器的弹出按钮单击),其中我列出了目录中的文件夹和文件。尽管第一个加载模式加载了特定目录的子文件夹和文件。当我第一次将.load()函数作为ajax调用使用时发生了这种情况,我希望在单击特定的子文件夹上加载子文件夹、文件和文件夹,但这就好像我犯了很多错误,Codeigniter输入没有返回到ajax请求post数据。我尝试过很多ajax模式,但没有成功。我甚至使用了print_r($_POST);,但返回空数组

这是我的密码:

引导模式:

代码语言:javascript
复制
<div class="modal fade chivins_media" tabindex="-1" role="dialog">

        <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable modal-lg" style="max-width: 87% !important;">

            <div class="modal-content">

                <div class="modal-header">
                    <div class="media-buttons float-left">
                        <ul>
                            <li><a href="#"><img src="<?php echo base_url('public/icon/svg/folder (1).svg'); ?>" alt="Upload files"></a></li>
                            <li>+ New Folder</li>
                            <li>Move</li>
                        </ul>
                    </div>
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>

                </div>

                <div class="modal-body">

                    <div class="row">
                        <div class="col-12 col-md-6 col-lg-9">
                            <div class="card mb-4 border scrollbar border-warning" id="style-1">

                                <div class="card-body row force-overflow media-box" style="overflow: scroll; height: 550px">

                                </div>
                            </div>
                        </div>
                    </div>

                </div>

                <div class="modal-footer">

                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>

                    <button type="button" class="btn btn-primary">Save changes</button>

                </div>

            </div>

        </div>

    </div>

Jquery代码:

代码语言:javascript
复制
    $(document).ready(function()
        {
            var site_url = $('body').attr('data-site-url');

            $(".chivins_media").on("show.bs.modal", function(event)
            {

                $(this).find(".media-box").load(site_url+'medias', function() 
                {

                    files_on_click()
                    load_folder();


                    function load_folder() {

                        $('.media-folder').click(function(event) {

                            var path = $(this).attr('data-folder-path'),
                                post_data = {'path': path};

                            $.ajax({
                                url: site_url+"medias/folderitems/",
                                type: 'post',
                                cache: false,
                                data: {p: path},
                                success: function(data) 
                                {
                                    console.log(data);
                                    $(this).parents('.media-box').html(data);
                                    files_on_click();
                                    load_folder();
                                },
                                error: function(data) {
                                    console.log(data);
                                }
                            });


                            // do the ajax bit


                            // $.post('ajax_get_preview', post_data, function(theResponse){

                            //     // load the modal window with the relevant content returned
                            //     $('#modal-content').html(theResponse);
                            // });

                            // $.post(site_url+"medias/folderitems/", post_data, function(data){ 
                            //     alert(data);
                            // }, "html");

                        });
                    }

                    function files_on_click() 
                    {
                        var files = [];

                        $(".media-file").click(function(event)
                        {
                            var media_id = $(this).find('img').attr('data-file');
                            if ($(this).hasClass('selected-media')) {
                                $(this).removeClass('selected-media');
                                files.splice(files.indexOf(media_id),1); 
                            } 
                            else {
                                $(this).addClass('selected-media');
                                files.push( media_id );
                            }

                            // console.log( files );
                        });

                    }
                });

            });


        });

这是我的控制器代码

控制器

代码语言:javascript
复制
    public function index()
        {

            $data = $this->media_manager->scan_dir();

            echo $this->media_builder($data);
        }

        public function folderitems()
        {

            // print_r($this->input->post());

            print_r($_POST);
            //  $path = $this->input->get('path', true);
            //  $medias = $this->media_manager->scan_dir($path);

            // echo $this->mediabuilder($medias);
        }

我想一个接一个地列出一个目录的文件和文件夹,按一下按钮

任何帮助都是非常感谢的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-18 07:53:07

谢谢大家,我认为我已经解决了我的问题通过多次尝试和错误,但如果你还有一个更好的选择仍然张贴在这里。

我只是对我的代码做了一些调整,方法是用base64_encode加密一个返回值,比如base64_encode,然后用var path = $(this).attr('data-folder-path');检索它,然后只对ajax加载函数进行加密。下面是我的教诲

Jquery

代码语言:javascript
复制
                function load_folder() {

                    $('.media-folder').click(function(event) {

                        var path = $(this).attr('data-folder-path');

                        $(this).parents('.media-box').load(site_url+"medias/folderitems/"+path, function(data){
                            files_on_click();
                            load_folder();
                        });

                    });
                }

控制器

代码语言:javascript
复制
        public function folderitems()
        {
            $path = base64_decode($this->uri->segment(4));
            echo $path; // It returns uploads/images/users
        }

如果你还有更好的选择发布它。谢谢你的帮忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57978336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档