表单需要将数据发布到 codeigniter 中的控制器

Posted

技术标签:

【中文标题】表单需要将数据发布到 codeigniter 中的控制器【英文标题】:Form needs to post data to a controller in 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() 【参考方案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。

以上是关于表单需要将数据发布到 codeigniter 中的控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JQuery 将 HTML 表单字段作为数组直接传递到 CodeIgniter 中的数据库

使用 Codeigniter 将表单输入中的字符串添加到 URL

使用 CodeIgniter 将上传图像字段添加到注册表单

Codeigniter 3.1.9表格不提交数据

将所有字段发布为数组的 Codeigniter 表单验证

CodeIgniter 和 AJAX 表单提交