2015-12-11 3 views
0

Я пытаюсь добавить элементы в свою корзину через вызов Ajax. Я попробовал это сделать просто с php, и он отлично работает. Но теперь я пытаюсь преобразовать свой код для php + ajax. У меня есть страница index.php, в которой я динамически меняю свой контент. Когда я нажимаю на какой-то навигационный список. Он перенаправляет меня на страницу следующим образом: index.php?page=item&category=Shirts&s_cat_id=2&cat_id=1, где страница передается через команду $_GET каждый раз, когда вызывается новая страница. У меня есть кнопка тележки на разделе заголовка index.php. Я хочу обновить div, чей идентификатор называется «cart». Я не могу сделать это через AJAX.Here я вставляю свой код. Любые предложения или помощь будут оценены.добавить в корзину div обновить через Ajax

корзина ДИВ

<div id="cart"> 
    <li style="color: #515151"> 
    <img id="cart_img" src="images/cart.png"> 
    Cart <span class='badge' id='comparison-count'> 
    <?php 
    if(isset($_SESSION['cart'])&& !empty($_SESSION['cart'])) 
    { 
     $cart_count=count($_SESSION['cart']); 
     echo $cart_count; 
    } 
     else { 
     $cart_count=0; 
    echo $cart_count; 
     } 
     ?> 
     </span> 
     </li> 
     </div> 

item.php

<div> 
<?php 
$query=mysqli_query($con,"select * from products where cat_id='$cat_id' and s_cat_id='$s_cat_id' ORDER BY product_name ASC"); 
if(mysqli_num_rows($query)!=0){ 
while($row=mysqli_fetch_assoc($query)){ 
?> 
<div> 
<input type="hidden" id="pid" value="<?php echo $row['productid'] ?>"> 
<h4><?php echo $row['product_name']; ?></h4> 
<h4>Price<?php echo "$" . $row['product_price']; ?> </h4> 
<form method="post" action=""> 
<input type="hidden" id="page" name="page" value="items"> 
<input type="hidden" id="action" name="action" value="add"> 
<input type="hidden" id="id" name="id" value="<?php echo $row['productid']; ?>"> 
<input type="hidden" id="name" name="name" value="<?php echo $row['product_name']; ?>"> 
<input type="hidden" id="cat_id" name="cat_id" value="<?php echo $row['cat_id']; ?>"> 
<input type="hidden" id="s_cat_id" name="s_cat_id" value="<?php echo $row['s_cat_id']; ?>"> 
<input type="hidden" id="category" name="category" value="<?php echo $cat ?>"> 
<td>Colors: 
<select name="color" id="color"> 
<option selected value="choose">choose</option> 
<option value="blue" id="blue">Red</option> 
<option value="blue" id="blue">Blue</option> 
<option value="yellow" id="yellow">Yellow</option> 
    <option value="green" id="green">Green</option> 
</select></td> 
    <td>Size : <select name="size" id="size"><option selected value="Choose size">Choose</option> 
    <option value="XL" id="XL">XL</option> 
    <option value="L" id="L">L</option></select> 
    </td> 
</div> 
<input type="submit" class="add-to-cart" id="addtocart" value="Add to Cart"> 
</form> 
</div> 
</div> 

add_cart.php

<?php 
include ("db/db.php"); 
session_start(); 
if($_POST){ 
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') { 

     //exit script outputting json data 
     $output = json_encode(
      array(
       'type'=>'error', 
       'text' => 'Request must come from Ajax' 
      )); 

     die($output); 
    } 
if(isset($_POST['Action']) && $_POST['Action']=="add" && isset($_POST['S_cat_id']) && isset($_POST['Cat_id'])){ 

    $id=intval($_POST['Id']); 
    $size = $_POST['Size']; 
    $color = $_POST['Color']; 
    $sql="SELECT * FROM products WHERE productid={$id}"; 
    $data = mysqli_query($con,$sql); 
    if (mysqli_num_rows($data) == 1) 
    { 
     $row = mysqli_fetch_array($data); 
     $index = $id." ".$color. " ".$size; 
     if(isset($_SESSION['cart'][$index]) && isset($_SESSION['cart'][$index]['color']) && $_SESSION['cart'][$index]['color'] == $color && isset($_SESSION['cart'][$index]['size']) && $_SESSION['cart'][$index]['size'] == $size){ 
      $_SESSION['cart'][$index]['quantity']++; 
      $output = json_encode(array('type'=>'message', 'text' => ' You have updated record successfully!')); 
      die($output); 

     }else{ 
      $_SESSION['cart'][$index] = array('quantity' => 1,'id'=> $id, 'price' => $row['product_price'], 'size' => $size, 'color' => $color, 'name' => $row['product_name']); 
      $output = json_encode(array('type'=>'message', 'text' => ' You have updated record successfully!')); 
      die($output); 

     } 
    } 

    else{ 
     $message="Product ID is invalid"; 
     $output = json_encode(array('type'=>'error', 'text' => $message)); 
     die($output); 

    } 

} 
} 
?> 

Ajax

<script> 
    $(document).ready(function() { 

     $('#addtocart').click(function(e){ 
      e.preventDefault(); 

      var page = $("#page").val(), 
       action = $("#action").val(), 
       name= $("#name").val(), 
       cat_id= $("#cat_id").val(), 
       s_cat_id = $("#s_cat_id").val(), 
       id=$("#id").val(), 
       color=$("#color").val(), 
       size=$("#size").val(), 
       category = $("#category").val(); 


      var proceed = true; 
      if(proceed){ 

       post_data= { 'Page': page, 'Action': action,'Name': name, 'Cat_id': cat_id,'S_cat_id':s_cat_id, 'Category': category,'Id':id,'Color':color,'Size':size}; 
       $.post('add_cart.php', post_data, function(response){ 

        //load json data from server and output message 
        if(response.type == 'error') 
        { 

         //output=$('.alert-error').html(response.text); 

        }else{ 

         output= $("#cart").load(); 

        } 

        $(".alert-error").delay(3200).fadeOut(300); 
       }, 'json'); 
      } 


     }); 

    }); 
</script> 

ответ

0

Итак, я предполагаю, что ваш PHP код работает, и что данные передаются правильно. Я также предполагаю, что ваш вызов $ .ajax работает. Если один из них не соответствует действительности, дайте мне знать.

Вы должны просто использовать jQuery для обновления данных div.

$("some div").html = response.text; 

Или если вы хотите обработать данные перед началом работы.

$("some div").html = process(response.text); 
+0

вы приняли на себя обе вещи coreect. Но код, который вы предоставили, должен заменить html в div, который мне не нужен. Мне просто нужно обновить весь div. Потому что в нем функция 'count()', которая обновит значок счетчика. – tabia

+0

Что вы подразумеваете под "refresh the div", можете ли вы просто запустить функцию count? –

0

Я также предполагая, как РНР и Ajax коды работают хорошо ... Все, что вам нужно сделать, это сохранить текущее состояние ценностный DIV, говоря что-то вроде

div=document.getElementById('elem_id'); oldv = div.firstChild.nodeValue;

и затем добавление нового результата, как

newv = oldv + responseMessage;

и, наконец, говоря

div.innerHTML=newv;

Я считаю, что это должно работать идеально подходит для вашей ситуации запроса обновления. Вы могли бы принять и адаптировать эту идею в различных условиях.

Примечание: Я также предполагая, что обе старые и новые значения либо текст/HTML содержание не требует каких-либо математических расчетов

Смежные вопросы