【问题标题】:Controller method is not detecting any parameter控制器方法未检测到任何参数
【发布时间】:2020-02-27 11:18:40
【问题描述】:

我试图在我的 url 中发送一个 id,但我的控制器没有得到那个值

$("#ChangeSlideForm").on("submit", function(){

          $.ajax({
            type: "POST",
            url: base_url + "Visualiser/ChangeSlide/21",
            success: function (response) {
              alert(response);
                // $("#deleteConfirm").modal('hide');
                // jQuery(function RefreshPageAdd($){
                //     $('#deleteConfirm').on('hidden.bs.modal', function (e) {
                //       location.reload();
                //     });
                // });

            }
          });
        });

我的观点

<div id="bodyChange" class="modal-body">
  <form id = "ChangeSlideForm" action="<?php echo base_url() ?>Visualiser/ChangeSlide" enctype="multipart/form-data" method="post" accept-charset="utf-8">
  <label class="btnSlide btn btn-outline-success">
    Zip <input class="file" name="file[]" type="file" hidden>
  </label>
  <label class="btnSlide btn btn-outline-success">
    Csv <input class="file" name ="file[]" type="file" hidden>
  </label>
  </div>
  <div class="modal-footer">
  <div class="col-md-12 text-center"> 
    <button type="submit" class="btn btn-primary col-md-6">Ajouter</button>
  </div>
  </form>

我的控制器标题:

    public function ChangeSlide($id){
     print_r($id);
    }

当我将 id 直接放在 url 中时,参数可以访问,否则当我使用 ajax 传递时,它不会检测到参数。

【问题讨论】:

  • 您正在使用 POST 请求,但您的 $.ajax 调用选项中没有 data。你需要在浏览器的开发者工具中添加data: "id=21",之类的东西(按F12)你可以在控制台中仔细检查每个请求,包括所有的头和参数。
  • 你打算做什么??进行ajax调用或表单发布?我可以看到表单操作和 ajax 操作。根据您的要求,我可以向您建议答案。
  • 变量base_urldefined 在哪里?你有任何浏览器控制台错误吗?

标签: javascript php ajax codeigniter


【解决方案1】:

试试这个:-

HTML

<form id="ChangeSlideForm" action="<?php echo base_url() ?>Visualiser/ChangeSlide/21" enctype="multipart/form-data" method="post" accept-charset="utf-8">
  <div id="bodyChange" class="modal-body">
    <label class="btnSlide btn btn-outline-success"> Zip
      <input class="file" name="file[]" type="file" hidden>
    </label>
    <label class="btnSlide btn btn-outline-success"> Csv
      <input class="file" name="file[]" type="file" hidden>
    </label>
  </div>
  <div class="modal-footer">
    <div class="col-md-12 text-center">
      <button type="submit" class="btn btn-primary col-md-6">Ajouter</button>
    </div>
  </div>
</form>

脚本:

<script type="text/javascript">
$(document).ready(function(){ 
    $("#ChangeSlideForm").on("submit", function(e){
        e.preventDefault();
        $.ajax({
            url     : $(this).attr('action'),
            type    : $(this).attr('method'),
            data    : $(this).serializeArray(), 
            success : function(data)
            {
                console.log(data)
            },
            error: function (xhr)
            {
                console.log(xhr)
            }
        });
    });
})
</script>

【讨论】:

    【解决方案2】:

    试试这个

     public function ChangeSlide(){
     print_r($this->uri->segment(3));
     }
    

    【讨论】:

      【解决方案3】:

      您在$.ajax() 中缺少参数data。所以你的 ajax 没有向你的控制器发送任何数据

      【讨论】:

        【解决方案4】:

        当您使用 ajax 传递值时,控制器方法将该值作为 $this->input->post('id');不作为参数。

        所以你必须在方法中添加以下内容

        公共函数 ChangeSlide($id = "") {

        }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-13
          • 2019-11-11
          • 2012-08-29
          • 2019-08-15
          • 2014-07-16
          相关资源
          最近更新 更多