ขอตัวอย่างการส่งค่าจาก view ไปหา model โดยผ่าน controller ใน CI หน่อยครับ
ก็ทำเหมือนกันเลยนี่ครับ.
Date :
2014-02-06 22:58:11
By :
mr.v
พอเข้าใจแล้วครับว่าตรง medthod ที่ controller ไม่ต้องกำหนดพารามิเตอร์
แบบนี้
Code (PHP)
public function amphur() {
$data['amphur'] = $this->Province_model->get_amphur($this->input->post('code'));
$this->load->view('province', $data);
}
ส่วนที่ medthod model กำหนดพารามิเตอร์ที่ต้องการส่งเข้าไปแล้วเรียกใช้ model ที่ controller แล้วใส่ค่าที่มาจากฟอร์ม แบบนี้
$this->Province_model->get_amphur($this->input->post('code')); ผมเข้าใจถูกนะครับ
Code (PHP)
function get_amphur($provinceid) {
$this->db->from('amphur');
$this->db->where('PROVINCE_ID',$provinceid);
$query = $this->db->get();
return $query->result_array();
}
ผมขอรบกวนถามเพิ่มอีกนิดครับผมทำส่งค่าด้วย ajax แต่ทำไม่มันไม่ส่งค่ามาที่ controller เลยครับ ลองทำตามที่ท่านแนะนำแล้ว มันแสดงม่าว่า 1 request
Date :
2014-02-07 08:19:36
By :
narubet
ตอนนี้เหมือนมันจะส่งค่ามาได้แล้วครับผมไปเปิดดูกับ firebug ตรง response มันมีข้อมูลอำเภอแสดงครับ
แต่ทำไมมันถึงไม่แสดงที่หน้า view ครับ
เพราะผมก็ส่งค่าไปยัง view แล้ว
Code (PHP)
<?php
class Province extends CI_Controller {
//var $province_id;
public function __construct() {
parent::__construct();
// Your own constructor code
$this->load->model('Province_model');
$this->load->helper('url');
$this->load->helper('form');
}
function form() {
$data['province'] = $this->Province_model->get_province();
$this->load->view('province',$data);
}
public function amphur() {
$data['amphur'] = $this->Province_model->get_amphur($this->input->post('id'));
//print_r($data['amphur']);
$this->load->view('province', $data);
}
}
?>
view
Code (PHP)
<script type="text/javascript" src="<?php echo base_url(); ?>js/jquery-1.11.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$("#province_id").change(function()
{
var provinceid;
var id=$(this).val();
var dataString = 'id='+ id;
//var postData = {'id':id};
$.ajax
({
type: "POST",
url: "<?php echo base_url() . "index.php/province/amphur"; ?>",
data: dataString,
cache: false,
success: function(data) {
//alert('ok');
// alert(data);
}
});
});
});
</script>
<span id="spryselect4">
<label for="amphur_id">อำเภอ</label>
<select name="amphur_id" id="amphur_id">
<option value="" selected>กรุณาเลือกอำเภอ</option>
<?php
foreach ($amphur as $amphur_value) {
echo"<option value='$amphur_value[AMPHUR_ID]' >$amphur_value[AMPHUR_NAME]</option>";
}
?>
</select>
Date :
2014-02-07 08:36:45
By :
narubet
ถ้ามันมีข้อมูล response มาแสดงว่าใน jquery ajax ไม่ได้เขียนให้มันแสดงในหน้านั้นป่าวครับ?
อย่างเช่น $('.some-class').html(data);
Date :
2014-02-07 12:17:31
By :
mr.v
ผมลองแบบนี้นะครับ $('#amphur_id').html(data); ไม่มีอะไรแสดงเลยครับ
Code (PHP)
<script type="text/javascript">
$(document).ready(function()
{
$("#province_id").change(function()
{
var id=$(this).val();
var dataString = 'id='+ id;
$.ajax
({
type: "POST",
url: "<?php echo base_url() . "index.php/province/amphur"; ?>",
data: dataString,
cache: false,
success: function(data) {
$('#amphur_id').html(data);
});
});
});
</script>
controller เมื่อเลือกจังหวัดส่งค่าจังหวัดมาแล้วไปเลือกอำเภอไปแสดง
Code (PHP)
public function amphur() {
$data['amphur'] = $this->Province_model->get_amphur($this->input->post('id'));
$this->load->view('province', $data);
}
เมื่อเลือกจังหวัดอำเภอต้องแสดงตรงนี้
view
Code (PHP)
<span id="spryselect4">
<label for="amphur_id">อำเภอ</label>
<select name="amphur_id" id="amphur_id">
<option value="" selected>กรุณาเลือกอำเภอ</option>
<?php
foreach ($amphur as $amphur_value) {
echo"<option value='$amphur_value[AMPHUR_ID]' >$amphur_value[AMPHUR_NAME]</option>";
}
?>
</select>
Date :
2014-02-07 13:19:10
By :
narubet
Load balance : Server 04