2014-12-24 4 views
2

Я не получаю ответа от запроса ajax. Я отправляю вызов ajax в файл processor.php, а файл processor.php обрабатывает файл и отправляет обработанный файл обратно в javascript. Я получаю результат в моем журнале консоли, но он не отображается в html. Мой Javascript код:Я не получаю ответ от запроса ajax

function add_to_cart(item_name,item_price){ 
    $('.user-info').slideUp('1200'); 
    $('.cart-status').slideDown('1200'); 

    var dataString = "item_name=" + item_name + "&item_price=" + item_price + "&page=add_to_cart"; 
    $.ajax({ 
    type: "POST", 
    url: "php/processor/processor.php", 
    data:dataString, 
    beforeSend:function(){ 
     $(".cart-show-product").html('<h3>Your Cart Status</h3><img src="images/loading.gif" align="absmiddle" alt="Loading...." class="center" /><br><p class="center">Please Wait...</p>'); 
    }, 
    success: function(response){ 
     console.log(response); 
     $(".cart-show-products").html(response); 
    } 
    }); 
} 

и мой РНР:

if(isset($_POST['item_name']) && !empty($_POST['item_name']) && isset($_POST['item_price']) && !empty($_POST['item_price'])) 
{ 
    $sql = mysqli_query($conn, 
     'SELECT * FROM 
     products_added 
     where 
     username = "'.mysqli_real_escape_string($conn, $_SERVER['REMOTE_ADDR']).'" 
     and 
     item_added="'.mysqli_real_escape_string($conn, $_POST['item_name']).'"' 
); 
if(mysqli_num_rows($sql) < 1) 
{ 
    mysqli_query($conn, 
     "INSERT INTO products_added values(
      '', 
      '".mysqli_real_escape_string($conn, $_SERVER['REMOTE_ADDR'])."', 
      '".mysqli_real_escape_string($conn, $_POST['item_name'])."', 
      '".mysqli_real_escape_string($conn, $_POST['item_price'])."', 
      '".mysqli_real_escape_string($conn, '1')."', 
      '".mysqli_real_escape_string($conn, $_POST['item_price'])."' 
      '".mysqli_real_escape_string($conn, date("d-m-Y"))."')" 
); 
?> 
<table class="cart-show-products"> 
    <thead> 
    <tr> 
     <td>Sl.No</td> 
     <td>Item</td> 
     <td>Qty</td> 
     <td>Price</td> 
     <td>Action</td> 
    </tr> 
    </thead> 
<tbody> 
<?php 
    $sl_no = 1; 
    $sql = mysqli_query(
      $conn, 
      'SELECT sum(amount) as grandtotal 
       FROM products_added 
       WHERE username = "'.mysqli_real_escape_string($conn, $_SERVER['REMOTE_ADDR']).'" 
       ORDER BY id' 
); 
    $row = mysqli_fetch_array($sql); 
    $grandtotal = strip_tags($row['grandtotal']); 
    $sql = mysqli_query(
       $conn, 
       'SELECT 
       id, 
       item_added, 
       price, 
       quantity 
       FROM products_added 
       WHERE username = "'.mysqli_real_escape_string($conn, $_SERVER['REMOTE_ADDR']).'" 
       ORDER BY id' 
); 
    $row = mysqli_fetch_array($sql); 
    $item_id = strip_tags($row['item_id']); 
    $item_name = strip_tags($row['item_added']); 
    $item_price = strip_tags($row['price']); 
    $quantity = strip_tags($row['price']); 
    ?> 
    <tr class="items_wrap items_wrap<?php echo $item_id; ?>"> 
     <td><?php echo $sl_no++; ?></td> 
     <td><?php echo $item_name ?></td> 
     <td><?php echo $quantity ?></td> 
     <td><?php echo $item_price ?></td> 
     <td><a href="javascript:void(0);" class="remove-from-cart" onclick="remove_this_item('<?php echo $item_id; ?>')"><i class="fa fa-times"></i></a></td> 
    </tr> 
    </tbody> 
</table> 
<?php 
} 
+0

Есть ли элемент на вашей странице html с классом 'cart-show-products'? Я вижу это на вашей странице ajax для PHP, если ваша php-страница отправляет ее обратно на ваш сценарий ajax, то она еще не на странице. – Robbert

+0

да 'cart-show-products' существует – hasan

+0

Правильный URL-адрес в сценарии ajax? Серверная работа работает правильно? – giannisf

ответ

1

Если это ваш фактический код, то у вас есть синтаксические ошибки в файле PHP. Отсутствует закрытая скобка для:

if(isset($_POST['item_name']) && !empty($_POST['item_name']) && isset($_POST['item_price']) && !empty($_POST['item_price'])) 

Вторая проблема заключается в том, что вы ничего не печатаете, если это условие потерпело неудачу.

Примечание

Вам не нужно использовать isset, если вы проверяете empty. empty вернет false, если переменная не установлена.

Вы можете отлаживать ответ на вкладке NET NET в своих инструментах веб-разработчика или видеть, что является ответом AJAX.

2

Если вы получаете ответ в консоли, проблема должна быть связана с вашим HTML. Я думаю, что часть проблемы заключается в том, что вы создали раздел на странице HTML с классом, который совпадает с таблицей, которую вызывает вызов AJAX на странице. Я бы предложил вместо этого изменить элемент HTML. Что-то вроде

<div id="products-table"></div> 

, а затем измените JavaScript для

function add_to_cart(item_name,item_price){ 
    $('.user-info').slideUp('1200'); 
    $('.cart-status').slideDown('1200'); 

    var dataString = "item_name=" + item_name + "&item_price=" + item_price + "&page=add_to_cart"; 
    $.ajax({ 
    type: "POST", 
    url: "php/processor/processor.php", 
    data:dataString, 
    beforeSend:function(){ 
     $("#products-table").html('<h3>Your Cart Status</h3><img src="images/loading.gif" align="absmiddle" alt="Loading...." class="center" /><br><p class="center">Please Wait...</p>'); 
    }, 
    success: function(response){ 
     console.log(response); 
     $("#products-table").html(response); 
    } 
    }); 
} 

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

+0

еще не получил :( – hasan

+0

@hasan, возможно, вам нужно опубликовать html, который вы возвращаете из своего вызова ajax. Кроме того, как было предложено ранее, размещение вашей разметки HTML может быть хорошей идеей. – Robbert

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