【问题标题】:Form needs to post data to a controller in codeigniter表单需要将数据发布到 codeigniter 中的控制器
【发布时间】:2016-04-20 05:46:08
【问题描述】:

我有一个表格,

<form>
<input id="amount"  type="text" placeholder="Give amount"  name="myamount"/>
<button class="btn btn-lg" type="submit" id="btn1" >FirstBTN</button> 
<button class="btn btn-lg" type="submit" id="btn2">SecondBTN</button>
</form>

这需要将数据发布到控制器内的函数。我正在尝试制作两个按钮,将数据发布到两个不同的控制器功能。这是我用 html 文件(视图)编写的 jquery 代码:

<script type="text/javascript">
$('#btn1').click(function() { 
        $.ajax({
            url: 'helloworld/firstmoney',
            type: 'POST',
            data: {'submit' : true ,myamount: $("#amount").val()},
            success: function (result) {

            }
        });  
 });

</script>

<script type="text/javascript">
    $('#btn2').click(function() { 
            $.ajax({
                url: 'helloworld/secondmoney',
                type: 'POST',
               data: {'submit' : true ,myamount: $("#amount").val()},
                success: function (result) {

                }
            });  

    });

    </script>

这是控制器,但我的控制器中没有任何值..

public function firstmoney(){
        $this->load->helper('form');

        $Money = $this->input->post("myamount");
        $data =  array(
        'Money' => $Money
         );
        $this->load->view("page1", $data);

    }

public function secondmoney(){
            $this->load->helper('form');

            $Money = $this->input->post("myamount");
            $data =  array(
            'Money' => $Money
             );
            $this->load->view("page2", $data);

        }

我的控制器名称是 helloworld,我需要在 $money 中分配值,但我无法让它工作。我是初学者,请告诉我应该遵循哪些步骤。

【问题讨论】:

  • 您似乎没有将任何表单数据发送到您的后端页面。
  • @Draco18s 我正在检查使用 jquery 和 ajax 的方法,所以这是我发现的,我不确定这是否正确,所以在这里发布以寻求帮助
  • 你完全可以使用 AJAX,但是你必须发送数据(看到 data{ submit:true } 块?这就是你要发送的数据)。
  • @Draco18s 那么如何从那里的输入字段发送数据?
  • data {'submit':true,'money':$('#amount').val()}

标签: php jquery ajax codeigniter model-view-controller


【解决方案1】:
<script type="text/javascript">
$('#btn1').click(function() { 
        $.ajax({
            url: 'helloworld/firstmoney',
            type: 'POST',
            data: {'submit' : true ,myamount: $("#myamount").val()},
            success: function (result) {

            }
        });  
 });

在上面的输入标签中保持 id 和 name 值为 myamount 并在 jquery 代码中也进行更改

【讨论】:

    【解决方案2】:

    如果您只想打印 $_POST 数据,请将此代码应用于 btn1。

    $(document).ready(function(){
        $('#btn1').click(function() { 
        event.preventDefault();
    
            $.ajax({ 
    
                url: "<?php echo base_url(); ?>" + "helloworld/firstmoney",         
                type: 'POST',
                data: {'submit' : true ,myamount: $("#amount").val()},
                success: function (result) { 
                    $("body").html(result);
                }
            });  
        });
    });
    

    在你的 helloworld 控制器中

    public function firstmoney(){
    
        $Money = $this->input->post("myamount");
        $data =  array(
        'Money' => $Money
         );
        $data = $this->load->view("page1", $data, TRUE); //it will return that page and save it in $data 
    }
    

    在你的page1.php视图中写下如下代码

    <?php
    echo $Money;
    ?>
    

    【讨论】:

      【解决方案3】:

      你可以试试别的方法

      试试下面的代码

      表格

      <form action="" method="post" id="myform">
      <input id="amount"  type="text" placeholder="Give amount"  name="myamount"/>
      <button class="btn btn-lg" type="submit" id="btn1" >FirstBTN</button> 
      <button class="btn btn-lg" type="submit" id="btn2">SecondBTN</button>
      </form>
      

      然后您可以添加 jquery 以更改提交按钮单击时的表单操作 如下所示

      <script type="text/javascript">
      
      $('#btn1').click(function() { 
              $('#myform').attr('action', 'Your domain/Your controller/firstmoney'); 
       });
      
      $('#btn2').click(function() { 
              $('#myform').attr('action', 'Your domain/Your controller/secondmoney'); 
       });
      
      </script>
      

      现在,如果您单击#btn1,您的表单将调用 firstmoney(),如果您调用 #btn2,它将调用 secondmoney()

      您可以使用

      获取表单数据
      $this->input->post('myamount');
      

      【讨论】:

        【解决方案4】:
         var base_url= '<?php echo base_url() ?>';
        
        
         url: base_url+'helloworld /firstmoney',
        

        【讨论】:

          【解决方案5】:

          首先,您的 AJAX 应该如下所示。

              $('#btn2').click(function() { 
                  $.ajax({
                      url: 'helloworld/secondmoney',
                      method: 'POST',//not type
                      data: { myamount: $("#amount").val() }//no need for submit variable (although you can use it) since this will be submitted on click; no quotes over variables
                  })
                    .done(function(result)) {
                        //do your stuff on response
                    });
              });
          

          第二:不需要 ajax,您应该使用带有 post 方法的经典表单,因为您正在将数据发布到的控制器/方法中进行重定向。 AJAX 需要 JSON 格式的响应,但在这种情况下不是。因此,是否将视图更改为具有方法和操作的表单,是否更改控制器/方法以将 JSON 字符串返回给 AJAX。

          【讨论】:

          • 开发者工具中的内容是什么?
          • 我正在使用 netbeans 并尝试调试控制器,但由于它没有到达控制器我无法调试它,并且控制台什么也没说..
          • 你有什么状态码?您是否被重定向到其他页面?正如我在回答中提到的,您必须返回 JSON 字符串才能使 AJAX 正常工作。
          • 我没有被定向到任何页面,我在同一个页面,返回 JSON 字符串是什么意思,我在哪里可以这样做?
          • result AJAX 中的变量必须是回显的字符串或 JSON 编码数组。您不应该加载新视图,而是回显其中一个。操作完成后,您应该在“网络”选项卡中看到状态代码 200。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-11-10
          • 2012-01-25
          • 2019-06-20
          • 1970-01-01
          • 2016-07-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多