我有一个下拉框,它正在从数据库中获取值和一个按钮,当单击该按钮时,下拉框中的产品应该在数据表中显示产品的详细信息。截至目前,当我单击按钮将产品添加到数据表中时,没有任何反应。我将发布我的MVC和jQuery代码。
型:
public function getProductById($product_id){
$query_product = $this->db->query("SELECT * FROM products WHERE id='".$product_id."'");
return $query_product->result();
}
控制器:
public function getProduct () {
$prod_id = $this->input->post('pid');
$this->load->model('order_m');
$prod = $this->order_m->getProductById($prod_id);
echo json_encode($prod);}
视图:
<form >
<label>Select product</label>
<select name="selectproduct" id="selectproduct">
<option>Select a Product</option>
<?php foreach ( $paid_products as $product ) { ?>
<option value="<?php echo $product->product_id ?>"><?php echo $product->name; ?></option>
<?php } ?>
</select>
<input type="button" class="btn btn-success" id="selectProduct" value="Add product to order">
</form>
<div class="container-fluid">
<table class="display" border="1" cellspacing="0" width="100%">
<thead>
<tr>
<th style="width:25%;" >Product</th>
<th style="width:25%;" >Sales Price</th>
<th style="width:25%;" >Qty</th>
<th style="width:25%;">Total</th>
</tr>
</thead><tbody></tbody></table>
.JS:
<script>
$(document).ready(function() {
$('table.container-fluid').dataTable({
"processing": true,
"serverSide": true,
"ajax": {
"url": "agent/order/getProduct",
"data": {"pid": product_id}
},
});
$('#selectProduct').click(function() {
var id = this.value;
var product = ('agent/order/getProduct'+id);
table.ajax.url(product).load();
table.reload();
});
</script>
如果有人能帮助我解决这个问题,我将不胜感激。谢谢
编辑:根据Praveen Kumar的观点进行编辑。
只需在代码中进行两项更改:
取代
<option><?php echo $product->name; ?></option>
跟
<option value="<?php echo $product->id; ?>"><?php echo $product->name; ?></option>
和
<script>
$(document).ready(function() {
var product_id = '<?php echo $product->product_id; ?>';
$('table.container-fluid').dataTable({
"processing": true,
"serverSide": true,
"ajax": {
"url": "agent/order/getProduct",
"data": {"pid": product_id}
},
});
$('#selectProduct').click(function() {
var id = $("#selectproduct").val();
var product = ('agent/order/getProduct/'+id);
table.ajax.url(product).load();
table.reload();
});
</script>