Div没有更新成功的ajax请求(在第一次请求时工作正常)

时间:2014-03-28 04:29:49

标签: php jquery ajax

我有 header.php 文件,我在其中编码 livesearch 。在该搜索中,我直接包含了“添加到购物车”按钮,以便用户可以通过搜索直接添加产品。 我在我的标题文件中有购物车div,我在其中显示购物车中的商品数量。

  1. 正确添加到购物车按钮后,Livesearch结果非常好。
  2. 当我第一次将任何产品添加到购物车中时,它会替换头文件中的购物车价值。也将“添加到购物车”按钮替换为“已添加”。
  3. 当我第二次使用相同搜索结果将产品添加到购物车时,它会将按钮的值更新为“已添加”,但它不会更新标题中购物车的值。所以这就是问题所在。
  4. 这是我的代码:

    的header.php

    <script type="text/javascript">
    $(document).ready(function()
    {
    $(".searchproductbrand").keyup(function()
    {
    var kw = $(".searchproductbrand").val();
    if(kw != '')  
     {
      $.ajax
      ({
         type: "POST",
         url: "livesearch.php",
         data: "kw="+ kw,
         success: function(option)
         {
           $("#livesearch").show();
           $("#livesearch").html(option);
           document.getElementById("livesearch").style.border="1px solid #A5ACB2";
         }
      });
     }
     else
     {
       $("#livesearch").html("");
       document.getElementById("livesearch").style.border="0px";
     }
    return false;
    });
    
    $(document).delegate('.buynow','click', function(){
        var productid = $(this).attr('id');
        var quantity = $('#quantity_'+productid).val();
        var type= $('#type_'+productid).val();
        $.ajax({
            type: "POST",
            url: "db_addtocart.php",
            context: this,
            data: {quantity:quantity, 
                   type:type, 
                   productid:productid},
            success: function(option){
                   this.value = 'Added';
           $('#carttotal').empty();
           $('#carttotal').replaceWith(option);
            }
        });
        return false;
    });
    });
    </script>
    <div id='carttotal'><input type='button' class='button' id='cartdetails'
    value='<?php echo "Cart&nbsp(".$proInCart.")"?>' style='padding:7px;
    border-radius:15px;'></div>
    

    例如,如果我搜索“他”,它会显示14个结果。首先,如果我点击“添加到购物车”按钮,它会将此按钮的值更改为“已添加”和“添加”。更新购物车div。但是从具有相同搜索结果的第二个请求开始,它不会更新购物车,但会将按钮的值更新为“已添加”。

    为什么?有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

在第一个请求之后代码无效的原因是您在函数结束时返回false。 您应该将功能更改为:

<script type="text/javascript">
$(document).ready(function()
{
$(".searchproductbrand").keyup(function(e)
{
var kw = $(".searchproductbrand").val();
if(kw != '')  
 {
  $.ajax
  ({
     type: "POST",
     url: "livesearch.php",
     data: "kw="+ kw,
     success: function(option)
     {
       $("#livesearch").show();
       $("#livesearch").html(option);
       document.getElementById("livesearch").style.border="1px solid #A5ACB2";
     }
  });
 }
 else
 {
   $("#livesearch").html("");
   document.getElementById("livesearch").style.border="0px";
 }
 e.preventDefault();
});

$(document).delegate('.buynow','click', function(e){
    var productid = $(this).attr('id');
    var quantity = $('#quantity_'+productid).val();
    var type= $('#type_'+productid).val();
    $.ajax({
        type: "POST",
        url: "db_addtocart.php",
        context: this,
        data: {quantity:quantity, 
               type:type, 
               productid:productid},
        success: function(option){
               this.value = 'Added';
       $('#carttotal').empty();
       $('#carttotal').replaceWith(option);
        }
    });
     e.preventDefault();
});
});
</script>