jquery - Ajax 将数据发送到 Controller 不起作用,Codeigniter

标签 jquery ajax codeigniter

我正在尝试使用ajax将复选框的值发布到 Controller 。但我发送的数据在 Controller 中始终为空。

my_view.php

<div class="regions">
                         <label class="check-inline">
                             <input type="checkbox" id="sangli" name="region[]" value="Sangli" class="category"
                                    onclick="javascript:updateregion()"
                                    > Sangli</label><br>
                         <label class="check-inline">
                             <input type="checkbox" id="satara" name="region[]" value="Satara" class="category"
                                    onclick="javascript:updateregion()"
                               >Satara</label><br>
                        <label class="check-inline">
                            <input type="checkbox" id="kolhapur" name="region[]" value="Kolhapur" class="category"
                                   onclick="javascript:updateregion()"
                               >Kolhapur</label><br>
                        <label class="check-inline">
                            <input type="checkbox" id="solapur" name="region[]" value="Solapur" class="category"
                                   onclick="javascript:updateregion()"
                                   >Solapur</label><br>
                            <input type="hidden" name="filterbyregion" id="filterbyregion"> 
                        <script type="text/javascript">
                            function updateregion() {
                                $("#sangli").change(function() {
                                        if($(this).prop("checked")) {
                                            var textbox = $(this).val();
                                            document.getElementById("filterbyregion").value = textbox;
                                            //document.filters.submit();
                                            alert(textbox);
                                            jQuery.ajax({
                                                url: '<?php  echo site_url();?>resource_controller/view_div',
                                                type: 'POST',
                                                cache: false,
                                                data: {"filterbyregion": textbox},
                                                dataType: 'text',
                                                success: function() {
                                                    alert(textbox);
                                                    $('#filter_div').load('<?php  echo site_url();?>resource_controller/view_div');
                                                },
                                                error: function(error) {
                                                    console.log(error);
                                                    alert(error);
                                                }
                                            });
                                        }
                                    });
                                    $("#satara").change(function() {
                                        if($(this).prop("checked")) {
                                            var textbox = $(this).val();
                                            document.getElementById("filterbyregion").value = textbox;
                                            //document.filters.submit();
                                            alert(textbox);
                                            jQuery.ajax({
                                                url: "<?php  echo site_url();?>resource_controller/view_div",
                                                type: "POST",
                                                cache: false,
                                                data: {"filterbyregion": $("#sangli").val()},
                                                dataType: "text",
                                                success: function() {
                                                    alert(textbox);
                                                    $('#filter_div').load('<?php  echo site_url();?>resource_controller/view_div');
                                                },
                                                error: function(error) {
                                                    console.log(error);
                                                    alert(error);
                                                }
                                            });
                                        }
                                    });
                                    $("#kolhapur").change(function() {
                                        if($(this).prop("checked")) {
                                            var textbox = $(this).val();
                                            document.getElementById("filterbyregion").value = textbox;
                                            //document.filters.submit();
                                            alert(textbox);
                                            jQuery.ajax({
                                                url: '<?php  echo site_url();?>resource_controller/view_div',
                                                type: 'POST',
                                                cache: false,
                                                data: {"filterbyregion": textbox},
                                                dataType: 'text',
                                                success: function() {
                                                    alert(textbox);
                                                    $('#filter_div').load('<?php  echo site_url();?>resource_controller/view_div');
                                                },
                                                error: function(error) {
                                                    console.log(error);
                                                    alert(error);
                                                }
                                            });
                                        }
                                    });
                                    $("#solapur").change(function() {
                                        if($(this).prop("checked")) {
                                            var textbox = $(this).val();
                                            document.getElementById("filterbyregion").value = textbox;
                                            //document.filters.submit();
                                            alert(textbox);
                                            jQuery.ajax({
                                                url: '<?php  echo site_url();?>resource_controller/view_div',
                                                type: 'POST',
                                                cache: false,
                                                data: {"filterbyregion": textbox},
                                                dataType: 'text',
                                                success: function() {
                                                    alert(textbox);
                                                    $('#filter_div').load('<?php  echo site_url();?>resource_controller/view_div');
                                                },
                                                error: function(error) {
                                                    console.log(error);
                                                    alert(error);
                                                }
                                            });
                                        }
                                    });
</script>
</div>

My_controller.php

public function view_div() {
        $rgn = str_replace(",", "','", $this->input->post('filterbyregion'));
        $rank = str_replace(",", "','", $this->input->post('ranking'));
        $exp = str_replace(",", "','", $this->input->post('selexperiance'));
        $qual = str_replace(",", "','", $this->input->post('qualification'));
        $sk = str_replace(",","','", $this->input->post('multiskills'));
        if($rgn != ""){
        $this->q['h'] = $this->resource_model->search_users($sk,$rgn,$qual,$exp,$rank);
        $this->q['state'] = $this->place_model->get_state();
        $this->q['district'] = $this->place_model->get_district();
        $this->q['taluka'] = $this->place_model->get_taluka();
        $this->q['courses'] = $this->course_model->get_all_course_names();
            if(isset($this->q['h']) && $this->q['h']->num_rows() > 0)
            {
                    $this->load->view('/web/filtered_resources', $this->q);
            }
        }
        return array();
    }

我的 div 正在加载,但没有预期的结果数据。

下面是我之前尝试过的另一个脚本。这可能会澄清我的目的:

<script type="text/javascript">
                        $.noConflict(document).ready(function() {
                            var textbox = "";
                            var rgns = [];
                         if(document.getElementById('sangli').checked) {
                             if (textbox == "") {
                                 textbox += "Sangli";
                             } else {
                                 textbox += ", Sangli";
                             }
                             rgns.push('sangli');
                            }
                            if(document.getElementById('satara').checked) {
                              if (textbox == "") {
                                 textbox += "Satara";
                             } else {
                                 textbox += ", Satara";
                             }
                             rgns.push('satara');
                            }
                            if(document.getElementById('kolhapur').checked) {
                              if (textbox == "") {
                                 textbox += "Kolhapur";
                             } else {
                                 textbox += ", Kolhapur";
                             }
                             rgns.push('satara');
                            }
                            if(document.getElementById('solapur').checked) {
                              if (textbox == "") {
                                 textbox += "Solapur";
                             } else {
                                 textbox += ", Solapur";
                             }
                             rgns.push('satara');
                            }
                            document.getElementById('filterbyregion').value = textbox;
                          //  document.filters.submit();
                            jQuery.ajax({
                                url: '<?php echo site_url();?>resource_controller/view_div',
                                type: "POST",
                                data: {"txt": textbox},
                                success: function() {
                            $('#filter_div').load('<?php echo site_url();?>resource_controller/view_div');
                              },
                                error: function(error) {
                                    console.log(error);
                                }
                             });
                        });
                    </script>

最佳答案

我无法完全弄清楚你想做什么。看起来像这个东西: $("#sangli").change(function() { });

您正在尝试分配事件监听器,但您将其放入名为 updateregion() 的函数中,当您单击复选框时该函数将被调用。

我认为您需要将 .change() 函数移到 updateregion 函数之外。我真的不知道你想在那里做什么。

我的网络控制台告诉我 updateregion() 函数未定义,所以也许您想将该 js 放在文件的开头,将其全部放在以下内容中:

$(document).ready(function(){
    //assign event listeners here
});

这将确保在文档完全加载之前不会发生任何事情。否则,您的 JavaScript 的一部分可能会在整个页面加载之前执行。

使用 Firefox,在工具 -> Web 开发人员 -> Web 控制台下您将获得更多信息。另外,检查您的 php 错误日志,通常位于/var/log/apache2/error.log 中。在 Linux 中,您可以使用“tail -f error.log”命令查看最后 20 行左右。

如果这里丢失了一些东西,我也不会感到惊讶: $this->input->post('filterbyregion')

为什么不只是 $_POST['filterbyregion']?

如果您没有尝试在一行中执行许多不同的操作,而只是执行一个操作,那么您会更容易剖析错误实际发生的位置。

关于jquery - Ajax 将数据发送到 Controller 不起作用,Codeigniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43582005/

相关文章:

javascript - 如何让 .each() 等待每次迭代完成

javascript - HTML: JQuery 如何使用JQuery获取data-dk-dropdown-value

javascript - 为什么 jQuery 的 Ajax AutoComplete 不起作用?

jquery - 是否有现成的 jquery 插件可以实时编辑/构建 html 代码?

php - 将 HTML-PHP 表导出/下载到 Excel 文件

php - 如何在 codeigniter 中执行登录代码...?

jquery - 如何修复 Internet Explorer 的占位符?

javascript - 在点击位置打开弹出窗口

javascript - 通过切换文件覆盖JS函数

php - Codeigniter 迁移自动和 key 问题