2016-11-27 57 views
2

我試圖從AJAX帖子中得到一個值,這個帖子似乎總是空的。我已經嘗試過做後打印前值,並將其工作正常,但我無法通過$這個 - >輸入 - 獲得價值>後()

HTML

<?php if ($product_info->stock > '1'){?> 
<button class="btn btn-lg btn-primary" product_id = "<?php echo $product_info->id;?>" id = "addtocart"><i class="fa fa-shopping-cart"></i>Add to Cart</button><?php}?> 

的Javascript

$(document).ready(function(){ 
    $("#addtocart").click(function(){ 
     var productid = $(this).attr('product_id'); 

     $.ajax({ 
      type: "POST", 
      url: "<?php echo base_url();?>shoppingcart", 
      data: productid, 
      cache: true, 
      success: function(productid){ 
       $("#cartstatus").html('<div class="alert alert-success"><strong>Success! </strong>Item has been added to the cart.</div>'); 
      }, error: function(productid){ 
       $("#cartstatus").html('<div class="alert alert-danger"><strong>Opps! </strong>Something went wrong.</div>') 
      } 
     }); 
    }); 
}); 

控制器

$productcart = array(); 

     if($this->session->userdata('cartsession')){ 
      $cartsession = $this->session->userdata('cartsession'); 

      foreach($cartsession as $id=>$val){ 
       $productcart[$id] = $val; 
      } 
     } 

     $productcart[$this->input->post('productid')] = 50; -->sample value 
     $this->session->set_userdata('cartsession', $productcart); 
     $cartsession = $this->session->userdata('cartsession'); 
+0

你知道CSRF是否打開嗎?這將阻止帖子工作。 我以前有類似的問題,發現我必須在$ thisVar = $ this-> input->中使用$ this-> input-> post('productid')來填充一個變量, ('productid')'(這是與CSRF分開的) – hayres

回答

1

data params具有certian格式,用於使用ajax將值發送到服務器。

嘗試......

$(document).ready(function(){ 
    $("#addtocart").click(function(){ 
     var productid = $(this).attr('product_id'); 

    $.ajax({ 
     type: "POST", 
     url: "<?php echo base_url();?>shoppingcart", 
     data: {productid : productid}, 
     cache: true, 
     success: function(productid){ 
      $("#cartstatus").html('<div class="alert alert-success"><strong>Success! </strong>Item has been added to the cart.</div>'); 
     }, error: function(productid){ 
      $("#cartstatus").html('<div class="alert alert-danger"><strong>Opps! </strong>Something went wrong.</div>') 
     } 
    }); 


    }); 
}); 
+0

這應該可行,如果可能的話,請解釋更改以及爲什麼它會起作用,以便其他人可以理解您的解決方案。 – phobia82

+0

好的@ phobia82。回答更新 –

+0

直到現在我還沒注意到:)謝謝:) –

0

而不必自己的屬性 '產品ID',使用HTML5的數據,如 '數據的product_id' 屬性,使HTML代碼如下所示:

<button class="btn btn-lg btn-primary" data-product_id="<?php echo $product_info->id;?>" id="addtocart"><i class="fa fa-shopping-cart"></i>Add to Cart</button><?php}?> 

此外,指定類名的元素,如果你有一個以上的「添加到購物車」按鈕,將它們分組,所以它看起來像:

<button class="btn btn-lg btn-primary" data-product_id="<?php echo $product_info->id;?>" class="addtocart"><i class="fa fa-shopping-cart"></i>Add to Cart</button><?php}?> 

它的時間,利用使用jQuery的數據屬性:

var product_id = $(this).data('product_id'); 

現在,整個代碼看起來像

$(document).ready(function(){ 
    $(".addtocart").click(function(){ 
    var product_id = $(this).data('product_id'); 
     $.ajax({ 
      type: "POST", 
      url: "<?php echo base_url();?>shoppingcart", 
      data: product_id, 
      cache: true, 
      success: function(response){ 
       $("#cartstatus").html('<div class="alert alert-success"><strong>Success! </strong>Item has been added to the cart.</div>'); 
      }, error: function(response){ 
       $("#cartstatus").html('<div class="alert alert-danger"><strong>Oops! </strong>Something went wrong.</div>') 
      } 
     }); 
    }); 
}); 

希望工程。