Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jQuery Ajax引导后弹出问题_Php_Jquery_Ajax_Twitter Bootstrap_Popover - Fatal编程技术网

Php jQuery Ajax引导后弹出问题

Php jQuery Ajax引导后弹出问题,php,jquery,ajax,twitter-bootstrap,popover,Php,Jquery,Ajax,Twitter Bootstrap,Popover,我有一个电子商务系统。我正在向我的购物车添加产品,如屏幕截图所示 当我单击“添加到购物车”按钮时。我正在显示一个购物车通知,这是引导弹出窗口。主要问题是,当我决定购买另一种产品时,我收到了相同的通知 我写的是“添加了产品A”。当我在每个不同的产品添加中这样做时,它写的是“添加了产品A”。添加i是正确的,但通知是错误的 这是我的jQuery代码 $('.quick-add-cart').click(function(){ //Sepete Ekleme İşlemi yapıyoruz.

我有一个电子商务系统。我正在向我的购物车添加产品,如屏幕截图所示

当我单击“添加到购物车”按钮时。我正在显示一个购物车通知,这是引导弹出窗口。主要问题是,当我决定购买另一种产品时,我收到了相同的通知

我写的是“添加了产品A”。当我在每个不同的产品添加中这样做时,它写的是“添加了产品A”。添加i是正确的,但通知是错误的

这是我的jQuery代码

$('.quick-add-cart').click(function(){ //Sepete Ekleme İşlemi yapıyoruz.
     $('#cart-popover').attr('data-content','');
     productID  = $(this).parents('.productbit').attr('id');
     $.ajax({
          type: "POST",
          url: "ajax/add_to_cart.php",
          dataType: 'json',
          data: {            
              productID : productID
          },
          error: function(jqXHR, exception) {
              if (jqXHR.status === 0) {
                   alert('Bağlantı sağlanamadı.\n Lütfen internet bağlantınızı kontrol ediniz.');
          } else if (jqXHR.status == 404) {
              alert('Sayfa bulunamadı. [404]');
          } else if (jqXHR.status == 500) {
              alert('Sunucu Hatası [500].');
          } else if (exception === 'parsererror') {
              alert('Requested JSON parse failed.'+ jqXHR.responseText);
          } else if (exception === 'timeout') {
              alert('Time out error.');
          } else if (exception === 'abort') {
              alert('Ajax istemi durduruldu.');
          } else {
              alert('Beklenmeyen Hata.\n' + jqXHR.responseText);
          }
          },
          success: function (data) {
              if (data.insert_count > 0) {
                  cart_old_count = $('#cart_count').text();
                  cart_new_count = parseInt(cart_old_count,10) + data.insert_count;
                      $('#cart_count').text(cart_new_count);
              }
                  $('#cart-popover').attr('data-content',data.queryresult).popover('show');
                  setTimeout(function() {
                      $('#cart-popover').popover('hide');
                  }, 5000);
              }
                            });
                       });
这是我的add_to_cart.php

require_once '../includes/class/class.cart.php';
        include_once '../locale.php';

        session_start();
        $C = new Cart(); 

//Sepete Ürün Ekliyoruz
if (isset($_POST['productID'])){
    if (!isset($_SESSION['userid'])) {
        $jsonData['queryresult'] = "Sepete Ekleme Yapabilmek için Bayi Girişi Yapmalısınız !";
    } else {
        $productid = $_POST['productID'];
        $product   = $C->get_product_fields('product', $productid);

        $jsonData['update_count'] = 0;
        $jsonData['insert_count'] = 0;

        $cart_error = FALSE;

        if ($C->is_in_cart($productid)) {
            if ($C->update_cart($productid))
                $jsonData['update_count'] += 1;
            else {
                $jsonData['queryresult'] = $C->cart_errors($productid);
                $cart_error = TRUE;
            }
        } else {
            if ($C->add_to_cart($productid))
                $jsonData['insert_count'] += 1;
            else {
                $jsonData['queryresult'] = $C->cart_errors($productid);
                $cart_error = TRUE;
            }
        }

        if ($cart_error === FALSE) {
            if ($jsonData['insert_count'] == 1){
                $jsonData['queryresult'] = "Bir paket ".$product." eklendi.";
            }

            if ($jsonData['update_count'] == 1){
                $jsonData['queryresult'] = "Bir paket daha ".$product." eklendi.";
            }

            if ($jsonData['insert_count'] == 0 && $jsonData['update_count'] == 0){
                $jsonData['queryresult'] = "Ürünü sepete ekleme sırasında hata oldu.";
            }
        }
    }
        header('Content-type: application/json');
        echo json_encode($jsonData);
}
相关问题:

要解决您的问题,需要进行两项更改:

  • 您应该使用
    .data('content',data.queryresult)
    而不是
    .attr('data-content',data.queryresult)

  • 在更新内容之前,您需要使用
    .popover('destroy')
    ,这可以防止
    popover
    在异步处理中丢失

  • 下面是一个示例代码,我使用setTimeout模拟Ajax调用:

    function displayPopover(msg) {
      $('#cart-popover').popover('destroy');
      $('#cart-popover').data('content',msg).popover('show');
      setTimeout(function() {
          $('#cart-popover').popover('hide');
      }, 5000);
    }
    
    // add first product to cart
    setTimeout(function() { displayPopover('product 1') }, 2000);
    
    // add second product to cart
    setTimeout(function() { displayPopover('product 2') }, 4000);
    
    你可以在这里看到它的作用:


    提示:当您遇到此类错误时,您不知道问题是在php还是javascript端,您应该尝试在javascript中
    console.log(data.queryresult)
    ,以验证php是否返回了正确的内容,以及您的问题是否在客户端

    我以前没用过数据函数。我阅读了jQuery数据手册。我应用了它。但是现在没有结果了:)只有空白…你试过用
    $('content',data.queryresult')替换
    $('cart popover').attr('data-content',data.queryresult)
    。data('content',data.queryresult)
    ?我测试过,发现调用.pover('destroy'),cf.answer也需要它。下次包含JSFIDLE时,它将加快速度。