我没有收到来自ajax请求的回复

时间:2014-12-24 14:42:13

标签: javascript php jquery ajax

我没有得到ajax请求的回应。我发布了一个对processor.php文件的ajax调用,并且processor.php文件正在处理该文件并将处理后的文件发送回javascript我在我的控制台日志中生成了我的结果,但它没有显示在html中。 我的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(){
      $(".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);
    }
  });
}

我的php是:

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
}

2 个答案:

答案 0 :(得分:2)

如果您在控制台中收到回复,则问题必须与您的HTML有关。我认为问题的一部分是你在HTML页面上创建了一个类,它与AJAX调用带入页面的表相同。我建议改为将HTML元素改为ID。像

这样的东西
<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个具有相同类的元素。你的脚本可能会混淆哪一个要改变。

答案 1 :(得分:1)

如果这是您的实际代码,那么您的PHP文件中会出现语法错误。缺少关闭括号:

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

第二个问题是,如果这种情况失败,你就不会打印任何东西。

注意

如果您正在查看isset,则无需使用empty。如果未设置变量,empty将返回false。

您可以通过检查Web开发人员工具中的NET选项卡来调试您的响应,或者查看AJAX的响应是什么。