Неопределенный foreach как опция AJAX - PullRequest
0 голосов
/ 14 октября 2019

Попытка получить подкатегории на основе категории. Вот что я получаю в ответ от сервера:

[{"id": "1", "agname": "xxxx", "sim": "xxxxxxxx", "del":"0", "coorid": "x"}]

Теперь, когда я пытаюсь отобразить его в виде выбора, я получаю неопределенный вывод, как показано ниже:

enter image description here

PS. Я не очень знаком с Javascript.

Вот мой код:

$.post("getagents.php", {
    coorid: coorid,
}, function(data){
    console.log(data);
    $('#agents').empty();
    $.each(JSON.parse(data, function(index, subAgentObj){
        $('#agents').append('<option value="'+subAgentObj.agname+'">'+subAgentObj.agname+'</option>');
    }))
});

Следуя ответу @ Каспера, вот что я получаю сейчас.

enter image description here

Ответы [ 2 ]

1 голос
/ 14 октября 2019

$.each метод, предназначенный для запуска через все элементы . В этом senario вам нужен цикл через массив, поэтому используйте метод JavaScript forEach вместо метода jQuery $.each.

var response = '[{"id":"1","agname":"xxxx","sim":"xxxxxxxx","del":"0","coorid":"x"}]';
JSON.parse(response).forEach((item) => {
  console.log(`id: ${item.id}`)
  console.log(`agname: ${item.agname}`)
  console.log(`sim: ${item.sim}`)
})
0 голосов
/ 14 октября 2019

Вы можете использовать карту

let data = JSON.stringify([{"id":"1","agname":"xxxx","sim":"xxxxxxxx","del":"0","coorid":"x"}])


    
    let parsedData = JSON.parse(data)
    
    parsedData.map((d, i) =>{
      Object.keys(d).map((di, i) =>{
         $('#agents').append('<option    value="'+parsedData[0][di]+'">'+parsedData[0][di]+'</option>');
    
      })
    
    })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="agents"></select>

здесь вы знаете, что ваш ответ будет массивом, поэтому вы можете получить доступ через свой массив и выполнить цикл, как показано ниже

let data = JSON.stringify([{"id":"1","agname":"xxxx","sim":"xxxxxxxx","del":"0","coorid":"x"}])


    
    let parsedData = JSON.parse(data)
    
      Object.keys(parsedData[0]).map((di, i) =>{
        $('#agents').append('<option    value="'+parsedData[0][di]+'">'+parsedData[0][di]+'</option>');
    
      })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="agents"></select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...