我一直在搜索codeigniter ajax post问题上的各种答案,但无法找到我的问题的解决方案。我正在尝试制作一个简单的ajax请求来更改元素的innerHTML以进行测试,以查看是否ajax工作,如果我正确的方式。我分别测试$ .post函数,它的工作原理我的jquery语法没问题,但我认为问题在于url:在与codeigniter一起使用的函数中的属性。
查看/ header.php文件:
<?php
if(!empty($product)){
$pid=$product[0]['product_id'];
}
?>
<script>
$(document).ready(function(){
$('.add_to_basket').click(function(){
$.ajax({
type: 'POST',
url: '<?=base_url()."cart_c/myfunk/".$pid?',
',
data: { somedata: 123456 },
success: function(data) {
$("#result").html(data);
},
error:function(){
alert("error");
}
});
});
});
</script>
控制器/ products.php:
<?php
class Products extends CI_Controller{
function __construct(){
parent::__construct();
$this->load->model('catalogue_model');
$this->load->model('products_model');
$this->load->model('basket_model');
}
function product($id){
$kitties['cats']=$this->catalogue_model->get_categories();
$data['product']=$this->products_model->get_product($id);
$data['active_button']=$this->basket_model->activeButton($id);
$this->load->view('header',$data);
$this->load->view('sidebar',$kitties);
$this->load->view('product',$data);
$this->load->view('footer');
}
}
?>
模型/ basket_model.php:
<?php
class Basket_model extends CI_Model{
function activeButton($sess_id){
if(isset($_SESSION['basket'][$sess_id])){
$id=0;
$label="<img src='".base_url()."images/remove.png' />";
}else{
$id=1;
$label="<img src='".base_url()."images/add.png' />";
}
$out="<a href='#' class='add_to_basket' rel='".$sess_id."_".$id."'>".$label."</a>";
return $out;
}
}
?>
查看/ product.php:
<div class="contentwrap">
<div id="content_area">
<?php if(!empty($product)){
foreach($product as $p){
?>
<h1><?=$p['product_name']?></h1>
<div id="product_image">
<img src="<?=base_url()?>/images/<?=$p['image']?>" width="400" height="300" />
</div>
<div id="product_desc">
<?=$p['description']?>
<br><br>
<?=$active_button?>
</div>
<?php
}
}else{
echo "Product unavailable";
}?>
<p id="result"></p>
</div>
</div>
控制器/ cart_c.php:
<?php
class Cart_c extends CI_Controller{
function __construct(){
parent::__construct();
$this->load->model('catalogue_model');
$this->load->model('products_model');
$this->load->model('basket_model');
}
function myfunk($id){
$some=$_POST['somedata'];
echo $some;
$kitties['cats']=$this->catalogue_model->get_categories();
$data['product']=$this->products_model->get_product($id);
$data['active_button']=$this->basket_model->activeButton($id);
$this->load->view('header',$data);
$this->load->view('sidebar',$kitties);
$this->load->view('product',$data);
$this->load->view('footer');
}
}
?>
帮助任何人?
答案 0 :(得分:0)
感谢@Phillip指出我正确的方向。我需要做的就是添加dataType:'html'
<script>
$(document).ready(function(){
$('.add_to_basket').click(function(){
$.ajax({
type: 'POST',
url: '<?= base_url()."cart_c/myfunk/".$pid?>',
data: { somedata: 123456 },
dataType:'html',
success: function(data) {
$("#result").html(data);
},
error:function(){
alert("error");
}
});
});
});
</script>