Как заполнить выбор с json данных? - PullRequest
3 голосов
/ 11 января 2020

Я практикую список корзины покупок, но не могу заполнить список, который пробовал несколько раз, но безуспешно. Будем благодарны за любые рекомендации.

PHP:

$get_cart =  mysqli_query($link,"SELECT cpro_id,cpro_name,cpro_price,cpro_qty FROM cart WHERE owner='$client'");
$rows = array();
while($r = mysqli_fetch_assoc($get_cart)) {
$rows[] = $r;
}
echo json_encode(array("status"=>"OK","data"=>$rows));
return true;

ответ сервера:

{"status":"OK","data":[
{"cpro_id":"9","cpro_name":"Product1","cpro_price":"10.00","cpro_qty":"1"},
{"cpro_id":"10","cpro_name":"Product2","cpro_price":"10.00","cpro_qty":"1"},
{"cpro_id":"11","cpro_name":"Product3","cpro_price":"10.00","cpro_qty":"1"},
{"cpro_id":"12","cpro_name":"Product4","cpro_price":"10.00","cpro_qty":"1"},
{"cpro_id":"13","cpro_name":"Product5","cpro_price":"10.00","cpro_qty":"1"}
]}

JS / HTML:

<select name="info" size="1" id="info" style="display:block;width: 100%;">
  <option selected value="cpro_id">cpro_name</option>
</select>
<script>
$(document).ready(function() {
  $.ajax({
      method: "POST",
      dataType: "JSON",
      data: {
        action: 'getcart'
      },
      url: "api.php"
    })
    .done(function(cart) {
      //fill list
    });
});
</script>

1 Ответ

2 голосов
/ 11 января 2020

Вы можете легко populate ваши json данные с помощью $.each, как показано в примере ниже:

let obj = {
  "status": "OK",
  "data": [{
      "cpro_id": "9",
      "cpro_name": "Product1",
      "cpro_price": "10.00",
      "cpro_qty": "1"
    },
    {
      "cpro_id": "10",
      "cpro_name": "Product2",
      "cpro_price": "10.00",
      "cpro_qty": "1"
    },
    {
      "cpro_id": "11",
      "cpro_name": "Product3",
      "cpro_price": "10.00",
      "cpro_qty": "1"
    },
    {
      "cpro_id": "12",
      "cpro_name": "Product4",
      "cpro_price": "10.00",
      "cpro_qty": "1"
    },
    {
      "cpro_id": "13",
      "cpro_name": "Product5",
      "cpro_price": "10.00",
      "cpro_qty": "1"
    }
  ]
};

$.each(obj.data, function(i, v) {
  $('#info').append('<option value="' + v.cpro_id + '">' + v.cpro_name + '</option>')
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="info" size="1" id="info" style="display:block;width: 100%;">
  <option selected value="cpro_id">cpro_name</option>
</select>

В вашем коде:

$.ajax({
    method: "POST",
    dataType: "JSON",
    data: {
      action: 'getcart'
    },
    url: "api.php"
  })
  .done(function(cart) {
    $.each(cart.data, function(i, v) {
      $('#info').append('<option value="' + v.cpro_id + '">' + v.cpro_name + '</option>')
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...