Codeigniter: как foreach в javascript с возвращенным массивом - PullRequest
1 голос
/ 17 мая 2010

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

это код JavaScript

$.ajax({
        url: "<?php echo site_url('home/getsubcats'); ?>",
        type: 'POST',
        data: form_data,
        success: function(msg) 

        {
            for ( var i in msg )
            {
                alert( msg[i] );
            }
            //$('#main_content').html(msg);
        }
    });

и это контроллер (он получает правильные данные, поэтому запрос не является проблемой);

        function getsubcats()
        {
            $this->load->model('site_model');

            if ($this->input->post('ajax')):
                $catid = $this->input->post('id');
                return $this->site_model->getSubCats($catid);
            endif;
        }

Ответы [ 2 ]

2 голосов
/ 17 мая 2010

Возможно, вам придется добавить returnType: 'json' к вашему объекту опции $ .ajax, если ваш код возвращает JSON.

Если ваш код зацикливается на одиночных символах, это означает, что msg - это строка, а не массив.

Кроме того, используйте for(var i = 0; i < msg.length; i++), поскольку петли for in будут также включать унаследованные атрибуты - поэтому при использовании сред JavaScript, которые расширяют Object.prototype или Array.prototype, вы можете столкнуться с проблемами.

0 голосов
/ 17 мая 2010

Скорее всего, вы перебираете строковый ответ, а не массив. Я не думаю, что jQuery делает преобразование автоматически.

Я не знаком с CodeIgniter, но когда вы возвращаете getSubCats (), результат автоматически кодируется в JSON? Потому что, если нет, вы должны закодировать его перед отправкой клиенту.

Используйте сетевую панель Firebug или вкладку "Ресурсы" в Chrome, чтобы проверить фактический ответ.

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