Codeigniter: как к foreach в JavaScript с возвращенным массивом

Я должен циклично выполниться через возвращенный массив в 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);
        }
    });

и это - контроллер (это get's корректные данные, таким образом, запрос не является проблемой);

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

            if ($this->input->post('ajax')):
                $catid = $this->input->post('id');
                return $this->site_model->getSubCats($catid);
            endif;
        }
1
задан Christophe 17 May 2010 в 10:24
поделиться

2 ответа

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

Если ваш код перебирает отдельные символы, это означает, что msg является строкой, а не массивом.

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

2
ответ дан 3 September 2019 в 00:30
поделиться

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

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

Используйте панель net в Firebug или вкладку Resources в Chrome для проверки фактического ответа.

0
ответ дан 3 September 2019 в 00:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: