Использование foreach внутри функции ajax

Это моя первая попытка создать функцию ajax.

Мой скрипт принимает выбранное значение выпадающего списка

$('#state').change(function () { var state = $('#state option:selected').val(); $.ajax({ type: 'POST', url: 'http://localhost/website/wp-admin/admin-ajax.php', dataType: 'json', data: { 'action' : 'myFunction', 'state' : state }, success: function( data ){ console.log(data); }, error: function (data) { console.log('error' + data); } }); }); 

Значение принимается функцией PHP, которая использует ее для выбора городов выбранного состояния

  function myFunction(){ $term_id = $_POST['state']; $taxonomy_name = 'state'; $cities = get_term_children( $term_id, $taxonomy_name ); foreach ( $cities as $city ) { $term = get_term_by( 'id', $city, $taxonomy_name ); $list = '<option value="'.$term->term_id.'">'.$term->name.'</option>'; } echo $list; die(); } add_action('wp_ajax_myFunction', 'myFunction'); add_action('wp_ajax_nopriv_myFunction', 'myFunction'); 

Но как отправить все значения, созданные foreach в переменной?

Solutions Collecting From Web of "Использование foreach внутри функции ajax"

Хорошо, так что на самом деле выглядит несколько способов сделать это. Первый из них – это изменение вашего $list в массив и возвращение его как JSON.

Легко будет изменить $list на массив, просто добавив его так:

 $list[] = '<option value="'.$term->term_id.'">'.$term->name.'</option>'; 

Затем верните его как JSON: echo json_encode( $list );

Это может дать вам большую гибкость в вашем JavaScript-коде, если вам нужно выполнить другие действия по определенным параметрам.

Другой способ, которым вы можете это сделать, – сохранить код, как он есть. Похоже на то, как вы в настоящее время настраиваете его, вы получите все добавленные теги <option> в одной гигантской строке. Это должно быть нормально для jQuery для обработки. Вам просто нужно что-то сделать с этим в ответ:

  success: function( data ){ console.log(data); $('#yourSelectBox").html(data); } 

Это добавит гигантскую длинную строку <option> вы получили от AJAX, который будет добавлен как HTML внутри <select> и </select> вашего окна выбора.