2017-07-06 53 views
-2

的狀態迴應我有這個javascript函數應該我重定向到服務器以500 AJAX後

http://localhost:8888/ID OF A PRODUCT/add-to-cart".

而是我得到這個:

http://localhost:8888/undefined/add-to-cart".

$('.add-to-cart').on('click', function() { 
     var productId = $(this).find('.indexImg').attr('id'); 

     $.ajax(productId+"/add-to-cart", 
     { 

     }); 
    }); 

<img class="indexImg" src="{{$product->image}}" id="{{$product->id}}">

有人可以幫助我獲得產品的ID嗎?

HTML:

@foreach($products as $product) 
    <div class="col-md-3"> 
     <div class="box-product"> 
      <div class="img-wrapper item"> 
       <a href="/product/{{$product->id}}/{{$product->slug}}"> 
        <a class="thumbnail" href="/product/{{$product->id}}/{{$product->slug}}" style="margin-bottom: 0px; border: none;"> 
        <img class="indexImg" src="{{$product->image}}" id="{{$product->id}}"> 
        </a> 
       </a> 
      <div class="tags"> 
      @if($product->discount > 0) 
       <span class="label-tags"><span class="label label-danger">Išpardavimas</span></span> 
      @endif  
       <span class="label-tags"><span class="label label-info">Nauja</span></span> 
      </div> 
      <div class="option"> 
       <i class="fa fa-shopping-cart add-to-cart" aria-hidden="true" style="color: white"></i> 
      </div> 
     </div> 
+0

錯誤本身描述的原因。 'undefined'。這意味着'productId'是空的。 – urfusion

+2

你總是在500內部服務器錯誤上做的第一件事,你去檢查服務器的錯誤日誌... – CBroe

+0

@urfusion但它不是空的。它在'var productId = $(this).find('。indexImg')。attr('id');'之後顯示86 – feknaz

回答

1

做一件事 變化

<i class="fa fa-shopping-cart add-to-cart" aria-hidden="true" style="color: white"></i>

隨着

<i class="fa fa-shopping-cart add-to-cart" aria-hidden="true" style="color: white" id="{{$product->id}}"></i>

,並獲得由

$(this).attr('id'); 

因此,代碼將

$('.add-to-cart').on('click', function() { 
     var productId = $(this).attr('id'); 

     $.ajax(productId+"/add-to-cart", 
     { 

     }); 
    }); 
0
$('.add-to-cart').on('click', function (event) { 
     var productId = event.target.id; 

     $.ajax(productId+"/add-to-cart", 
     { 

     }); 
    }); 
+0

它沒有顯示'id'甚至'undefined'。它什麼也沒有顯示 – feknaz

+0

console.log(event.target.id)是什麼意思?另外檢查console.log(event.target),也許你的元素沒有id,就是這樣。 – Angels

+0

關於爲什麼這樣可以幫助每個人的解釋。 – jwenting

0

.find是試圖找到當前元素裏面u需要上去然後找到indexImg

$('.add-to-cart').on('click', function() { 
     var productId = $(this).parents('.box-product').find('.indexImg').attr('id'); 

     $.ajax(productId+"/add-to-cart", 
     { 

     }); 
    }); 
0

您嘗試基於DOM獲得產品ID的方式不正確。 jQuery .find()方法在元素中查找指定的元素,即它的後代。如果您查看HTML,您會看到包含add-to-cart按鈕的div元素以及您嘗試獲取其id屬性的圖像處於同一級別。

所以你必須改變你正在遍歷的方式來達到<img>標記的id屬性。

var productId = $(this).closest('.box-product').find('.indexImg').attr('id');