Как выбрать конкретный объект в AJAX? - PullRequest
0 голосов
/ 22 апреля 2019

Я использую ajax для каскадного выпадающего меню в моем проекте asp.net mvc.Я опущу код ниже #asset это идентификатор выпадающего списка 1 #members это идентификатор выпадающего списка 2

var $j = jQuery.noConflict();

$j(document).ready(function() {

  $("#asset").change(function() {
    debugger
    $.get("/Asset/Getmembers", {
      asset: $("#asset").val()
    }, function(data) {

      $("#members").empty();

      $.each(data, function(index, row) {

        $("#members").append($('<option></option>').attr('value', data[index].capacity).text(data[index].capacity));

      });
    });
  })
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Если я выберу актив, появится соответствующая мощность.Например, если выбран актив 1, емкость для актива 1, скажем, 7, будет в следующем выпадающем списке.Но мне нужно показать от 1 до 7 в моем раскрывающемся списке мощностей. Если выбран актив 2, емкость для актива 2, скажем, 6, будет в следующем раскрывающемся списке. Но мне нужно показать от 1 до 6 в раскрывающемся списке мощностей

Ответы [ 3 ]

0 голосов
/ 22 апреля 2019

В соответствии с данными

let assetdata = JSON.Parse({id: 3, asset: "Meeting room 1", capacity: 6, state: "Active"});

ссылка на ваши данные выше

Шаг 1. Сначала необходимо сохранить ограничения данных в отдельной переменной

let assetid = assetdata.id;
let capacitylen = assetdata.capacity;

Шаг2: Затем свяжите свой каскадный выпадающий список (Capcity) с необходимыми ограничениями: обратите внимание, измените цикл foreach

for(let i= assetid ;i<= parseInt(capacitylen);assetid++)
{
    $("#members").append($('<option></option>').attr('value',assetid ).text(assetid);
}
0 голосов
/ 22 апреля 2019

Как насчет использования оператора распространения es6?

const data = [
{asset: "Meeting room 1", capacity: 6},
{asset: "Meeting room 2", capacity: 10},
{asset: "Meeting room 3", capacity: 12}
]

// handle click and add class
$( document ).ready(function() {
    for (var item of data) {
  		$(`<option value="${item.capacity}">${item.asset}</option>`).appendTo($('#select1'));
		}
    
    $( "#select1" ).change(function() {
            $('#select2').empty().show();
        	 for (var item of [...Array(parseInt($(this).val())).keys()]) {
  						$(`<option value="${item + 1}">${item + 1}</option>`).appendTo($('#select2'));
						}
		});  
    
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
 <select id="select1"></select>
 <select id="select2" style="display: none;">
 </select>
</div>
0 голосов
/ 22 апреля 2019

Похоже, ваш вызов API возвращает число, а не список чисел, поэтому необходимо использовать цикл each try for.

for(var i=0;i<parseInt(data);i++)
{
 $("#members").append($('<option></option>').attr('value',i).text(i);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...