Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Codeigniter输入库无法识别ajax post数据_Jquery_Ajax_Codeigniter_Post_Input - Fatal编程技术网

Jquery Codeigniter输入库无法识别ajax post数据

Jquery Codeigniter输入库无法识别ajax post数据,jquery,ajax,codeigniter,post,input,Jquery,Ajax,Codeigniter,Post,Input,我正在尝试使用CodeIgniter和引导模式构建一个文件管理器(在单击按钮时作为文件管理器的弹出窗口),其中列出了目录中的文件夹和文件。虽然第一次加载模式时加载了特定目录的子文件夹和文件。这是在我第一次使用.load()函数作为ajax调用时发生的,我想在单击特定子文件夹时加载子文件夹文件和文件夹,但就像我犯了很多错误一样,Codeigniter输入没有返回我的ajax请求post数据。我尝试了很多ajax模式,但没有成功。我甚至使用了print\r($\u POST)但返回空数组 这是我的密

我正在尝试使用CodeIgniter和引导模式构建一个文件管理器(在单击按钮时作为文件管理器的弹出窗口),其中列出了目录中的文件夹和文件。虽然第一次加载模式时加载了特定目录的子文件夹和文件。这是在我第一次使用
.load()
函数作为ajax调用时发生的,我想在单击特定子文件夹时加载子文件夹文件和文件夹,但就像我犯了很多错误一样,Codeigniter输入没有返回我的ajax请求post数据。我尝试了很多ajax模式,但没有成功。我甚至使用了
print\r($\u POST)但返回空数组

这是我的密码:

引导模式:

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

                    }
                });

            });


        });
这是我的控制器代码

控制器


    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);
        }
        public function folderitems()
        {
            $path = base64_decode($this->uri->segment(4));
            echo $path; // It returns uploads/images/users
        }
我想在单击按钮时逐个列出目录的文件和文件夹


非常感谢您的帮助,谢谢大家。我想我已经通过多次尝试和错误解决了我的问题,但是如果您还有更好的选择,请仍将其发布在这里

我只是对我的代码做了一些调整,用base64_encode加密返回值,比如
uploads/images/users
,然后用
var path=$(this.attr('data-folder-path')检索它然后重新启动我的ajax加载函数。下面是我的调整

Jquery

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

                    });
                }
控制器


    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);
        }
        public function folderitems()
        {
            $path = base64_decode($this->uri->segment(4));
            echo $path; // It returns uploads/images/users
        }

如果你还有更好的选择,就发吧。感谢您的帮助

我找不到class
.media folder
.media file
的按钮。所以我猜它们是通过ajax响应动态添加的。因此,在添加它们之后,您需要再次为它们绑定单击事件,因为当您尝试添加它们时,它们并不存在。另一个选项是查找未动态添加的元素,并使用子选择器将主事件附加到该元素,例如:
$(“.modal body”)。在(“click”、“.media file”上,函数(event){…}
尝试其中一个,看看是否有效。(如果请求到达服务器并返回任何内容,请检查控制台网络页面)是的,它们是动态添加到页面的是的,它们是动态添加到页面的。我已经调用了正在工作的函数,但我的主要上下文是,当我单击子文件夹时,它返回错误ajax错误301,而不提交ajax post数据。当我尝试此````$this->input->post('p')时;```或``$`u POST````,它返回空数组