2015-03-01 2 views
0

Я искал ответы на различные вопросы по проблеме codeigniter ajax post и не смог найти решение моей проблемы. Я пытаюсь сделать простой запрос ajax для изменения innerHTML элемента для тестирования просто для того, чтобы увидеть, работает ли ajax, и если я иду по правильному пути. Я тестировал функцию $ .post отдельно, и он работает, поэтому мой синтаксис jquery в порядке, но я думаю, что проблема кроется в url: свойство в функции при использовании с кодом.пытается сделать простой запрос ajax в 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

Вы сделать запрос на cart_c/myfunk пока эта функция ничего не возвращает полезно для запроса ajax. Вам нужно вернуть html/json/xml из контроллера и указать, что вы ожидаете в запросе: dataType: 'json' – Philip

+0

@Philip Я поместил dataType: 'json' в функцию $ .ajax и echo json_encode ($ немного); в моем контроллере, и теперь я получаю предупреждение с сообщением «error» – admir

+1

@Philip ok, я изменил dataType на «html», и теперь он работает. Спасибо, что указали мне в правильном направлении – admir

ответ

0

Благодаря @Phillip указал мне в правильном direction.All мне нужно сделать, это добавить 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> 
Смежные вопросы