Как перебрать объект json и вставить в html-страницу, как выбрать параметры поля формы? - PullRequest
1 голос
/ 18 июня 2019

Работая в проекте Laravel, я пытаюсь использовать javascript Ajax для обновления параметров полей выбора формы, каждый раз, когда изменяется другое значение поля выбора.

В настоящее время у меня есть все данные, возвращаемые в мое представление, и я вижу их в журнале консоли.Я сталкивался с этой проблемой раньше, я в принципе не могу обернуть голову, как перебрать json-объект с помощью JavaScript.Я могу получить только в настоящее время получить один из двух результатов данных, возвращаемых для отображения в качестве опции выбора.

Приведенный ниже код от моего контроллера, который получает данные, когда сделан запрос ajax, вот как я 'В настоящее время я возвращаю данные.

$templates = DB::table('templates')->where("page_name", "=", $page)->get();

      return response()->json([
        'status' => true,
        'templates' => $templates
      ]);

Вот так эти данные затем отображаются в консоли.

{status: true, templates: Array(2)}
status: true
templates: Array(2)
0:
created_at: "2019-06-17 22:29:44"
css: "somecss"
html: "somehtml"
id: 1
page_name: "page-1"
template_name: "template-1"
updated_at: "2019-06-17 22:29:44"
__proto__: Object
1:
created_at: "2019-06-18 01:30:49"
css: "somecss"
html: "somehtml"
id: 3
page_name: "page-1"
template_name: "template-2"
updated_at: "2019-06-18 01:30:49"
__proto__: Object
length: 2
__proto__: Array(0)
__proto__: Object

И, наконец, именно так я сейчас пытаюсь перебратьи отобразить эти данные, используя javascript / jquery.

       success: function(data) {
         if(data.status == true) {
             $.each(data.templates, function(i, template) {
                 $('#template-select').html('<option value="' + template.template_name + '">' + template.template_name + '</option>');
             });
         }
        }

В настоящее время только «шаблон-2» отображается в качестве параметра выбора, когда должны быть оба параметра «шаблон-1» и «шаблон-2».

1 Ответ

1 голос
/ 18 июня 2019

Вы близки, измените код на:

success: function(data) {
         if(data.status == true) {
             $.each(data.templates, function(i, template) {
                 $('#template-select').append($('<option value="' + template.template_name + '">' + template.template_name + '</option>'));
             });
         }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...