@Artur937
junior

Контроллер php возвращает ответ в виде массива, но как воспользоваться им в функции js?

При нажатии на кнопку на главной странице срабатывает код JS
function char_db(sub, char){			//выдаем разделы
	if( (sub == 1) || (sub == 2) || (sub == 3) ) {
		$.ajax({ 
					type: "POST",
					url: "/char",
					data: {asub: sub},
					success:function (text) {
						for(i = 0; i < text.length; i++){
							$('.charter_i').find('ul').append('<li data="'+ text[i]['id'] + '">' + (i+1) + '. ' + text[i]['name'] +'</li>');
						}
						show_charter(char);	
					}
				}).fail(function () {
					console.log('fail');
				});
	} else {
		return;	
	}
}


Этот AJAX запрос попадает на фнукцию в MainController
class MainController
{
public static function actionIndexcmain(){
        
        $char = intval($_POST['asub']);


        $chars = Main::getChars($char);
     
        return $chars;

    }
}


Класс main получает из бд всю нужную инфу.
class Main{
public static function getChars($char){

        $db = Db::getConnection();

        $charList = array();
        $result = $db->query( "SELECT *  FROM charter WHERE sub = ". $char);

        $i = 0;
        while($row=$result->fetch()){
            $charList[$i]['id'] = $row['id'];
            $charList[$i]['name'] = $row['name'];
            $i++;
        }
        return $charList;

    }
}


В итоге сформированный в контроллере массив $chars отправляется (но главный вопрос - куда
отправляется и как им воспользоваться?) в инструментах разработчика Network наблюдаю нужный
массив, однако воспользоваться им не могу. Предпросмотр ответа в инструментах разработчика выглядит:
array(4) { [0]=> array(2) { ["id"]=> string(1) "1" ["name"]=> string(16) "Геология" } [1]=> array(2) { ["id"]=> string(1) "2" ["name"]=> string(16) "Экология" } [2]=> array(2) { ["id"]=> string(1) "3" ["Гидрология"]=> string(16) "Анатомия" } [3]=> array(2) { ["id"]=> string(1) "4" ["name"]=> string(27) "Общая минералогия" } }
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
return json_encode($chars);

Потом уже в js, нормальный js массив получишь
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы