Хотите добавить данные ответа Ajax в опции выбора - PullRequest
0 голосов
/ 04 ноября 2019

Хочу добавить опцию Select, но не знаю, как извлечь значения ответа в опции select.

Все значения, выбранные в ответе, но не могут добавить в опцию select, синтаксис я считаю неправильным

success: function (response) {

   if (response) {
        console.log(response);
        $("#state").empty();
        $("#state").append('<option value="" selected disabled>Select State</option>');
        $.each(response, function (id, name) {
              $("#state").append('<option value="' + id + '">' + name + ' </option>');

        });
    }
}

Вывод на консоль: Значение извлечено, но не может быть добавлено в опцию выбора

[{…}]
  0: {id: 4, name: "Valencia"}
  1: {id: 5, name: "ABC"}
     length: 2
     __proto__: Array(0)

Ответы [ 3 ]

2 голосов
/ 04 ноября 2019

.each применительно к объекту возвращается в соответствии с руководством:

jQuery.each( object, callback )

где:

object
Type: Object
The object to iterate over.

callback
Type: Function( String propertyName, Object valueOfProperty )
The function that will be executed on every value.

Так что внутри name у вас есть объект. В соответствии с этим, чтобы получить свойство name, вы должны использовать name.name.

Итак, используя лучшее имя переменной, вы можете получить:

$.each(response, function (id, element) {
          $("#state").append('<option value="' + element.id + '">' + element.name + ' </option>');
1 голос
/ 04 ноября 2019
success: function (response) {

   if (response) {
        console.log(response);
        $("#state").empty();
        $("#state").append('<option value="" selected disabled>Select State</option>');
        $.each(response, function (index, value) {
              $("#state").append('<option value="' + value.id + '">' + response[index].name + ' </option>');

        });
    }

Каждая функция реализована неправильно, см. Документацию: https://api.jquery.com/jQuery.each/

Первый параметр является индексом и является необязательным, второй является текущим объектом в цикле.

Я изменил ваш код, чтобы показать, как использовать каждый из них

edit: пропущено "."

0 голосов
/ 04 ноября 2019

вы не извлекаете значения по индексу. у вас есть массив из двух объектов JSON. поэтому вы должны извлечь с использованием индекса, как показано ниже.

success: function (response) {

   if (response) {
        console.log(response);
        $("#state").empty();
        $("#state").append('<option value="" selected disabled>Select           State</option>');
        $.each(response, function (index, value) {
              $("#state").append('<option value="' + response[index].id + '">' + response[index].name + ' </option>');

        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...