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

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

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

$templates = DB::table('templates')-{amp}gt;where("page_name", "=", $page)-{amp}gt;get(); return response()-{amp}gt;json([ 'status' ={amp}gt; true, 'templates' ={amp}gt; $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('{amp}lt;option value="'   template.template_name   '"{amp}gt;'   template.template_name   '{amp}lt;/option{amp}gt;'); }); } } 

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

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

 success: function(data) { if(data.status == true) { $.each(data.templates, function(i, template) { $('#template-select').append($('{amp}lt;option value="'   template.template_name   '"{amp}gt;'   template.template_name   '{amp}lt;/option{amp}gt;')); }); } }