2016-03-07 115 views
0

嗨,我是新的Ajax和有問題。我正在嘗試使用ajax製作購物車。我不知道我的代碼有什麼問題,請幫助我。 當我點擊添加按鈕警報來'沒有成功',什麼也沒有發生,我不能添加項目到購物車。 感謝您的幫助。在codeigniter使用ajax購物車

這是我的看法

<html> 
<head> 
    <title>Codeigniter cart class</title> 
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
    <link href='http://fonts.googleapis.com/css?family=Raleway:500,600,700' rel='stylesheet' type='text/css'> 
     <link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>css/style.css"> 

    <script type="text/javascript"> 
     $(document).ready(function() { 
     $("#myform").submit(function(event) { 
     event.preventDefault(); 

     var insert_data= $(this).serializeArray(); 
     $.ajax({ 
     url: "<?php echo base_url(); ?>" + "index.php/shopping2/add", 
     dataType: 'json', 
     //type: "POST", 
     data: insert_data, 

      success:function(response) { 

//if (response){ 
    //var res = JSON.parse(response); 
    var res = response; 
    if(res.status == 200){ 

     window.location.href="http://127.0.0.1/codeigniter_cart2/index.php/shopping2"; 
    }else{ 

     alert(res.msg); 
    } 
//} 
//else{ 
    // alert('sorry'); 
//} 
       } 

}); 
     }); 
     }); 
    </script> 
</head> 
<body> 


    <div id='content'> 
    <div class="row"> 

    <div class="col-sm-5"> 
     <h2 align="center">Items</h2> 
     <?php 


     ?> 

       <table id="table" border="0" cellpadding="5px" cellspacing="1px"> 

     <?php 
     foreach ($products as $product) { 
      $id = $product['serial']; 
      $name = $product['name']; 

      $price = $product['price']; 
      ?> 


        <tr class="well"> 
       <td style="padding-left:15px;"><?php echo $name; ?></td> 

        <td> 
         Rs. <?php echo $price; ?></td> 
        <?php 
        ?> 

        <?php 
        echo form_open('',array('id' => 'myform')); 
        echo form_hidden('id', $id); 
        echo form_hidden('name', $name); 
        echo form_hidden('price', $price); 
        ?> <!--</div>--> 

        <?php 
        $btn = array(
         'class' => 'fg-button teal', 
         'value' => 'Add', 
         'name' => 'action', 
         'id' => 'add_button' 
        ); 
        ?> 
        <td> 
        <?php 
        // Submit Button. 
        echo form_submit($btn); 
        echo form_close(); 
        ?> 
       </td> 
       </tr> 
       <?php } ?> 
       </table> 

       </div> 

    <div class="col-sm-7"> 
    <!-- <div id="cart" >--> 

      <h2 align="center">Items on Cart</h2> 


      <div> 
     <?php $cart_check = $this->cart->contents(); 


     if(empty($cart_check)) { 
     echo 'To add products to your shopping cart click on "Add" Button'; 
     } ?> </div> 

      <table id="table" border="0" cellpadding="5px" cellspacing="1px"> 
       <?php 
       // All values of cart store in "$cart". 
       if ($cart = $this->cart->contents()): ?> 
       <div id="addcart"> 
       <tr id= "main_heading" class="well"> 

        <td style="padding-left:15px;"><?>Name</td> 
        <td>Price(Rs)</td> 
        <td>Qty</td> 
        <td>Amount</td> 
        <td>Remove</td> 
       </tr> 
       <?php 
       // Create form and send all values in "shopping/update_cart" function. 
       echo form_open('shopping2/update_cart'); 
       $grand_total = 0; 
       $i = 1; 

       foreach ($cart as $item): 


        echo form_hidden('cart[' . $item['id'] . '][id]', $item['id']); 
        echo form_hidden('cart[' . $item['id'] . '][rowid]', $item['rowid']); 
        echo form_hidden('cart[' . $item['id'] . '][name]', $item['name']); 
        echo form_hidden('cart[' . $item['id'] . '][price]', $item['price']); 
        echo form_hidden('cart[' . $item['id'] . '][qty]', $item['qty']); 
        ?> 
        <tr class="well" id="addcart"> 

         <td style="padding-left:15px;"> 
        <?php echo $item['name']; ?> 
         </td> 
         <td> 
          <?php echo number_format($item['price'], 2); ?> 
         </td> 
         <td> 
         <?php echo form_input('cart[' . $item['id'] . '][qty]', $item['qty'], ' type="number" max="99" min="1" value="1" style="width:50px;"'); ?> 
         </td> 
        <?php $grand_total = $grand_total + $item['subtotal']; ?> 
         <td> 
          Rs <?php echo number_format($item['subtotal'], 2) ?> 
         </td> 
         <td> 

         <?php 
         // cancle image. 
         $path = "<img src='http://127.0.0.1/codeigniter_cart2/images/cart_cross.jpg' width='25px' height='20px'>"; 
         echo anchor('shopping/remove/' . $item['rowid'], $path); ?> 
         </td> 
       <?php endforeach; ?> 
       </tr> 

       <tr> 
        <td style="padding-left:30px;"><b>Order Total: Rs <?php 

        //Grand Total. 
        echo number_format($grand_total, 2); ?></b></td> 


        <td colspan="5" align="right"><input type="button" class ='fg-button teal' value="Clear cart" onclick="window.location = 'shopping2/remove'"> 

         <?php //submit button. ?> 
         <input type="submit" class ='fg-button teal' value="Update Cart"> 
         <?php echo form_close(); ?> 


         </td> 
       </tr></div> 
<?php endif; ?> 
     </table> 


    </div> 


    <!-- <div id="products_e" align="center">--> 

      <!--</div>--> 



    <!-- </div>--> 
    </div> 
    </div> 
</body> 
</html> 

這是我的控制器

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

類Shopping2擴展是CI_Controller {

public function __construct() 
{ 
    parent::__construct(); 
    //load model 
    $this->load->model('billing_model'); 
      $this->load->library('cart'); 
} 

public function index() 
{ 

    $data['products'] = $this->billing_model->get_all(); 

    $this->load->view('shopping_view2', $data); 
} 
function add() 
{ 
     $insert_data = array(
     'id' => $this->input->post('id'), 
     'name' => $this->input->post('name'), 
     'price' => $this->input->post('price'), 
     'qty' => 1 
    ); 

    $this->cart->insert($insert_data); 
    //$success = $this->cart->insert($insert_data); 
    $cart_check = $this->cart->contents(); 

if(!empty($cart_check)){ 
    //$this->cart->contents(insert_data); 
    $res = array('status' => 200, 'msg' => 'success'); 

}else{ 
    $res = array('status' => 500, 'msg' => 'No success'); 
} 

echo json_encode($res); 
//echo $data[0]['value']; 
//redirect('shopping2'); 
} 


    function remove($rowid) { 
       // Check rowid value. 
    if ($rowid==="all"){ 

     $this->cart->destroy(); 
    }else{ 

     $data = array(
      'rowid' => $rowid, 
      'qty'  => 0 
     ); 

     $this->cart->update($data); 
    } 


    redirect('shopping2'); 
} 

    function update_cart(){ 

      // Recieve post values,calcute them and update 
      $cart_info = $_POST['cart'] ; 
    foreach($cart_info as $id => $cart) 
    { 
       $rowid = $cart['rowid']; 
       $price = $cart['price']; 
       $amount = $price * $cart['qty']; 
       $qty = $cart['qty']; 

        $data = array(
      'rowid' => $rowid, 
          'price' => $price, 
          'amount' => $amount, 
      'qty'  => $qty 
     ); 

     $this->cart->update($data); 
    } 
    redirect('shopping2');   
} 

} 

請幫助我如何添加使用AJAX的車項目。

回答

0

由於你設法得到迴應,問題應該在於你的模型或數據插入。

幾點建議:

  1. 它也建議你使用.post的$()代替$。阿賈克斯()。
  2. "<?php echo base_url(); ?>" + "index.php/shopping2/add"可以更改爲"<?php echo site_url('shopping2/add"'); ?>"
  3. 使用內置的Codeignter輸出類來輸出JSON。在這裏看到:https://www.codeigniter.com/userguide3/libraries/output.html
+0

我想我甲肝E題中數據的插入,所以我應該怎麼解決呢? – Pittz

+0

數據未插入的原因很多。所以你應該開始縮小可能的錯誤。首先要檢查的是,你的會話是否正常工作?內置的購物車庫使用會話。 –