表单需要将数据发布到 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 中的数据库