2013-02-23 228 views
0

我已經圍繞AJAX上的衆多教程CodeIgniter,但我似乎無法得到這個工作。我試圖提交一個表格,將產品添加到購物車。Codeigniter Ajax JQuery表單提交

這裏是控制器部分:

public function addtocart($page = 'orcamento') 
{ 
    ... 
    // ADD TO CART 
    $idprod=$this->input->post("id",TRUE); 
    $quant=$this->input->post("quant",TRUE); 
    $prodname=$this->input->post("prodname",TRUE); 

    $addtocart = array(
     'id'  => $idprod, 
     'qty'  => $quant, 
     'price' => 1, 
     'name' => $prodname 
     ); 

    $this->cart->insert($addtocart); 

的觀點:

<?php  
    $attributes = array('id' => 'flor'.$florestais_total_count); 
    echo form_open('orcamento/addtocart', $attributes); 
?> 
<span class="prod_list_quant_title"> 
    <?php echo lang('orc_quantidade'); ?> 
</span> 
<input type="text" name="quant" id="quant" class="prod_list_quant_input" value="" /> 
<input name="id" type="hidden" value="<?php echo $flor->idprodutos; ?>" style="border:0;" /> 
<input name="prodname" type="hidden" value="<?php $this->General_model->getLangString($flor->name,$lang); ?>" style="border:0;" /> 
<div class="prod_list_quant_add" onclick="addtocart('flor<?php echo $florestais_total_count; ?>')"> 
    <span class="text_quant_add"><?php echo lang('orc_btn_add'); ?></span> 
</div> 
</form> 
</div> 

而且還功能addtocart:

function addtocart(formid) 
{ 
    var pid=$c("form#"+formid).children("input[name='id']").val(); 
    var pquant=$c("form#"+formid).children("input[name='quant']").val(); 
    var pname=$c("form#"+formid).children("input[name='prodname']").val(); 

    $c.ajax({ 
      type: "POST", 
      url: "<?php echo base_url(); ?>orcamento/addtocart", 
      dataType: "json", 
      data: "id="+pid+"&qty="+pquant&"name="+pname, 
      cache:false, 
      success: function() { 
      } 
     }); 
     return false; 
    } 

什麼我錯在這裏做什麼?

回答

0

試試這個,而不是$c.ajax

$.post("<?php echo base_url(); ?>orcamento/addtocart",$("#"+formid).serialize()); 

,看看接下來會發生什麼。

+0

它什麼都不做......甚至沒有控制檯錯誤... – user1776702 2013-02-23 19:17:37

0

我明白了!這就是答案:

function addtocart(formid) 
{ 
    $c.ajax({ 
     type: "POST", 
     url: "<?php echo base_url(); ?>orcamento/addtocart", 
     data : $c("form#"+formid).serialize(), 
     success : function(data) { 
       // Show OK message 
       alert('ok'); 
     }, 
     error: function(error){ 
       // Show error message 
       alert('error'); 
     } 
     }); 
    return false; 
} 

現在我只需要更新視圖上的產品不刷新整個事情...

0

我工作的一個類似的問題。通過一些測試,我發現jquery調用類似於CSS之類的東西來處理CI URL。嘗試刪除base_url回聲並查看您的位置。