проблема кодирования и разбора json - PullRequest
0 голосов
/ 22 июля 2011

Привет всем. Я получаю некоторые данные из базы данных, используя php, кодирую их как json, а затем отображаю их, используя ajax. происходит то, что внутри моего объекта json у меня есть массив, который также имеет объекты json ... когда я пытаюсь получить доступ к объектам json из javascript внутри массива, я получаю неопределенное значение, поскольку они интерпретируются как строковые, а не объекты json

это мой php код:

<?php

if ($_SERVER['HTTPS'] == 'on') {
    require '../../Objects/Course.php';
    require '../config.php';
    require '../Tools.php';

    $response;

    $c = new Course();
    $courses = listCourses();

    if (is_array($courses)) {
        if (count($courses) != 0) {
            $response = array('result' => true, 'data' => 'exist', 'courses' => '');
            foreach ($courses as $course) {
                $response['courses'][] = json_encode($course);
            }
            print json_encode($response);
        } else {
            $response = array('result' => true, 'data' => 'empty');
            print json_encode($response);
        }
    } else {
        $response = array('result' => false, 'data' => 'empty');
        print json_encode($response);
    }
}
?>

и это мой код JavaScript:

$.post('ServiceProviders/CourseRelated/listAllCourses.php', function(data){
        if(data.result == true){   
            for(var i = 0 ; i < data.courses.length ; i++){                    
                alert(typeof data.courses[0]);
            }                
        }else{
            alert('something went wrong while listing all the courses...try again later.')
        } 
    },'json');

вывод предупреждения - строка вместо объекта ... как мне это исправить?

1 Ответ

1 голос
/ 22 июля 2011

Попробуйте заменить $response['courses'][] = json_encode($course); на $response['courses'][] = $course;, поскольку вы хотите, чтобы json кодировал ваш ответ только один раз.

...