Таким образом, я делаю сайт корзины покупок, используя CodeIgniter на бэкэнде. Вот уловка, я зацикливаю список продуктов с кнопкой «добавить в корзину» внутри тега формы. Итак, скажем, у меня есть 5 продуктов для отображения, будет 5 тегов формы:
<?php foreach ($products as $vid):?> <form id='cart' method='post' action='<?php echo base_url();?>cart/add'> <input type='hidden' id='vid' name='vid' value='<?php echo $vid['id'];?>'/> <div class="video_box"> <div class="video"> <a href="#<?php echo $vid['id'];?>" name='modal'> <img src="<?php echo base_url(); ?>assets/images/<?php echo $vid['video_thumbnail'];?>" alt="<?php echo $vid['title'];?>" border="0" height='150' width='100' /> </a> </div> <div class="video_checkbox"> <?php if($this->session->userdata('nric')===FALSE ) { echo "Please Login to Rent/Purchase"; } else { ?> <input type='image' id='btn-add' src="<?php echo base_url(); ?>assets/images/rent_btn.png" alt="Rent" border="0" /> <?php } ?> </div> </form> <?php endforeach;?>
И мой сценарий javascript / jquery:
<script type="text/javascript"> $(document).ready(function() { $("#btn-add").click(function() { var action = $("#cart").attr('action'); var form_data = { vid : $("#vid").val(), is_ajax : 1 }; $.ajax({ type: "POST", url: action, data: form_data, success: function(response) { if(response == 'exists') { alert("This item is in your cart already! You can only add 1 same item once"); } if(response == 'newses') { alert("This item has been added succesfully!"); document.location.reload(true); } if(response == 'new_added') { alert("This item has been added succesfully1!"); document.location.reload(true); } } }); return false; }); }); </script>
Как мой контроллер (в виде действия) localhost / site / cart / add:
public function add() { $vid=$_POST['vid']; if($this->session->userdata('shoppingCart')===FALSE) { $shoppingCart = array ( $vid => 1 ); $this->session->set_userdata('shoppingCart',$shoppingCart); echo 'newses'; } else { $tmp = $this->session->userdata('shoppingCart'); if(array_key_exists($vid, $tmp)) { //only allow user to add qty:1 to the same product echo 'exists'; } else { $tmp[$vid]= 1; $this->session->set_userdata('shoppingCart',$tmp); echo 'new_added'; } } }
вашегоpublic function add() { $vid=$_POST['vid']; if($this->session->userdata('shoppingCart')===FALSE) { $shoppingCart = array ( $vid => 1 ); $this->session->set_userdata('shoppingCart',$shoppingCart); echo 'newses'; } else { $tmp = $this->session->userdata('shoppingCart'); if(array_key_exists($vid, $tmp)) { //only allow user to add qty:1 to the same product echo 'exists'; } else { $tmp[$vid]= 1; $this->session->set_userdata('shoppingCart',$tmp); echo 'new_added'; } } }
!public function add() { $vid=$_POST['vid']; if($this->session->userdata('shoppingCart')===FALSE) { $shoppingCart = array ( $vid => 1 ); $this->session->set_userdata('shoppingCart',$shoppingCart); echo 'newses'; } else { $tmp = $this->session->userdata('shoppingCart'); if(array_key_exists($vid, $tmp)) { //only allow user to add qty:1 to the same product echo 'exists'; } else { $tmp[$vid]= 1; $this->session->set_userdata('shoppingCart',$tmp); echo 'new_added'; } } }
вашегоpublic function add() { $vid=$_POST['vid']; if($this->session->userdata('shoppingCart')===FALSE) { $shoppingCart = array ( $vid => 1 ); $this->session->set_userdata('shoppingCart',$shoppingCart); echo 'newses'; } else { $tmp = $this->session->userdata('shoppingCart'); if(array_key_exists($vid, $tmp)) { //only allow user to add qty:1 to the same product echo 'exists'; } else { $tmp[$vid]= 1; $this->session->set_userdata('shoppingCart',$tmp); echo 'new_added'; } } }
!public function add() { $vid=$_POST['vid']; if($this->session->userdata('shoppingCart')===FALSE) { $shoppingCart = array ( $vid => 1 ); $this->session->set_userdata('shoppingCart',$shoppingCart); echo 'newses'; } else { $tmp = $this->session->userdata('shoppingCart'); if(array_key_exists($vid, $tmp)) { //only allow user to add qty:1 to the same product echo 'exists'; } else { $tmp[$vid]= 1; $this->session->set_userdata('shoppingCart',$tmp); echo 'new_added'; } } }
вашегоpublic function add() { $vid=$_POST['vid']; if($this->session->userdata('shoppingCart')===FALSE) { $shoppingCart = array ( $vid => 1 ); $this->session->set_userdata('shoppingCart',$shoppingCart); echo 'newses'; } else { $tmp = $this->session->userdata('shoppingCart'); if(array_key_exists($vid, $tmp)) { //only allow user to add qty:1 to the same product echo 'exists'; } else { $tmp[$vid]= 1; $this->session->set_userdata('shoppingCart',$tmp); echo 'new_added'; } } }
!public function add() { $vid=$_POST['vid']; if($this->session->userdata('shoppingCart')===FALSE) { $shoppingCart = array ( $vid => 1 ); $this->session->set_userdata('shoppingCart',$shoppingCart); echo 'newses'; } else { $tmp = $this->session->userdata('shoppingCart'); if(array_key_exists($vid, $tmp)) { //only allow user to add qty:1 to the same product echo 'exists'; } else { $tmp[$vid]= 1; $this->session->set_userdata('shoppingCart',$tmp); echo 'new_added'; } } }
вашегоpublic function add() { $vid=$_POST['vid']; if($this->session->userdata('shoppingCart')===FALSE) { $shoppingCart = array ( $vid => 1 ); $this->session->set_userdata('shoppingCart',$shoppingCart); echo 'newses'; } else { $tmp = $this->session->userdata('shoppingCart'); if(array_key_exists($vid, $tmp)) { //only allow user to add qty:1 to the same product echo 'exists'; } else { $tmp[$vid]= 1; $this->session->set_userdata('shoppingCart',$tmp); echo 'new_added'; } } }
!public function add() { $vid=$_POST['vid']; if($this->session->userdata('shoppingCart')===FALSE) { $shoppingCart = array ( $vid => 1 ); $this->session->set_userdata('shoppingCart',$shoppingCart); echo 'newses'; } else { $tmp = $this->session->userdata('shoppingCart'); if(array_key_exists($vid, $tmp)) { //only allow user to add qty:1 to the same product echo 'exists'; } else { $tmp[$vid]= 1; $this->session->set_userdata('shoppingCart',$tmp); echo 'new_added'; } } }
Итак, теперь проблема заключается в том, что я могу добавить продукт в корзину, без проблем, все, что есть в контроллере корзины / добавления, отлично работает, выход такой, как ожидалось. Но мне нужно предупредить клиента о том, был ли продукт добавлен или не удалось (как показано в моем коде jquery). Проблема в том, что скрипт будет работать отлично только для первого созданного. Значит, если есть 5 продуктов, он будет зацикливаться и создать 5 правильных форм-тегов, только первый тег формы запустит скрипт успешно (после нажатия кнопки). Вторая-пятая форма будет перенаправлена на другую пустую страницу, повторив результат (например, «newses», «new_added», «exists»), не предупреждая пользователя, как указано в скрипте (но функция корзины работает правильно).
Что я сделал не так?