• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ajax jquery pobieranie listy na podstawie selecta

42 Warsaw Coding Academy
0 głosów
191 wizyt
pytanie zadane 31 marca 2022 w JavaScript przez Klaudiaaa Początkujący (390 p.)
edycja 1 kwietnia 2022 przez Klaudiaaa

Muszę pobrać dane z pliku JSON Ajaxem i wyświetlić listę produktów. Następnie po zmianie selecta musi się zmienić lista produktów. Czy da się zrobić wszystko jQuery? Czy po zmianie selecta znowu mam pobierać nową listę produktów?

  <form class="generator">
    <label class="generator__input-name">Sortuj:
      <select class="generator__select" name="gender">
        <option value="recommended" selected>Rekomendowane</option>
        <option value="saleout">Wyprzedaż</option>
        <option value="bestseller">Bestseller</option>
        <option value="promotion">Promocja</option>
        <option value="new">Nowość</option>
      </select>
    </label>
  </form>

$(document).ready(function() {

$.getJSON( "products.json", function( data ) {

    var items = [];
    $.each( data, function( key, val ) {

      var nameOfProduct = val.prod_name;
      var priceOfProduct = val.prod_price;
      var statusOfProduct = val.prod_status;

      items.push( "<li>" +nameOfProduct + ' ' + priceOfProduct + "</li>" );
    });
   
    $( "<ul/>", {
      "class": "products_list",
      html: items.join( "" )
    }).appendTo( "body" );
  });


  $(".generator__select").change(function(){
    var filter = $('.generator__select').val(); 
       console.log(filter); 

<--tu pobieram wartość z selecta i nie wiem co dalej
   });
  });

W ogóle to czy wyświetlenie tej listy poprzez push i appendTo jest prawidłowe?

1 odpowiedź

0 głosów
odpowiedź 31 marca 2022 przez Wiciorny Ekspert (280,970 p.)
Spokojnie wszystko to da się zrobić w jQuery i na Vanilla Javascript, a nawet jeszcze więcej. jQuery mimo lat jest ogromnie użyteczna i zapewnia ogrom możliwości
link do api: https://api.jquery.com/jquery.ajax/
komentarz 1 kwietnia 2022 przez Klaudiaaa Początkujący (390 p.)
edycja 1 kwietnia 2022 przez Klaudiaaa

Czy to jest poprawnie?

$(document).ready(function() {
  function listOfProducts() {
    var filter = $('.generator__select').val(); 
    
    $.getJSON( "products.json", function( data ) {
      var items = [];
      $.each( data, function( key, val ) {
        
        var nameOfProduct = val.prod_name;
        var priceOfProduct = val.prod_price;
        var statusOfProduct = val.prod_status;

        if(filter == 'all') {
          if(statusOfProduct == undefined) {
            return false;
          }

          items.push( `<div class="item">
          <div class="img_wrapper">
          <img src="https://dummyimage.com/400x3:4 " alt="">
          </div>
          <div class="item_info">
          <div class="name">`
          +nameOfProduct +
          `</div>
            <div class="price">`
              +priceOfProduct +
            `</div>
          </div>
        </div>` );
        }
        
        else if(statusOfProduct == undefined) {
          statusOfProduct = '';
        }
        
        else if(statusOfProduct.includes(filter)) {
          items.push( `<div class="item">
          <div class="img_wrapper">
          <img src="https://dummyimage.com/400x3:4 " alt="">
          </div>
          <div class="item_info">
          <div class="name">`
          +nameOfProduct +
          `</div>
            <div class="price">`
              +priceOfProduct +
            `</div>
          </div>
        </div>` );
        }
      });
      
      $('.products_list').html(items);
      items.splice(0, items.length);
    });
  }
  
  listOfProducts();
  
  $(".generator__select").change(function(){
    listOfProducts();
  });
});
  <form class="generator">
    <label class="generator__input-name">Sortuj:
      <select class="generator__select" name="gender">
        <option value="recommended" selected>Rekomendowane</option>
        <option value="saleout">Wyprzedaż</option>
        <option value="bestseller">Bestseller</option>
        <option value="promotion">Promocja</option>
        <option value="new">Nowość</option>
      </select>
    </label>
  </form>

<div class="products_list">
</div>

 

 

Podobne pytania

0 głosów
0 odpowiedzi 1,771 wizyt
0 głosów
0 odpowiedzi 123 wizyt
pytanie zadane 29 sierpnia 2016 w JavaScript przez RobsonWD Nowicjusz (220 p.)
0 głosów
1 odpowiedź 428 wizyt
pytanie zadane 17 czerwca 2016 w JavaScript przez pietrek98 Początkujący (430 p.)

93,385 zapytań

142,384 odpowiedzi

322,540 komentarzy

62,746 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...