[英]Form needs to post data to a controller in codeigniter
我有一張表格,
<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文件(view)中編寫的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分配值,但我不能讓它工作。 我是初學程序員,所以請告訴我應該遵循的步驟。
首先,你的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。
var base_url= '<?php echo base_url() ?>';
url: base_url+'helloworld /firstmoney',
你可以嘗試另一種方式來做到這一點
試試下面的代碼
形成
<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>
現在你的表單會調用firstmoney(),如果你單擊#btn1,如果你調用#btn2它會調用secondmoney()
您可以使用獲取表單數據
$this->input->post('myamount');
如果您只想打印$ _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;
?>
<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代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.