Помогите, пожалуйста, разобраться в проблеме. В файрфоксе всё отлично работает, а вот в остальных браузерах (Chrome, Opera, Safari, IE) никакого ответа. Вне .getJSON код работает везде, а вот внутри колбэка только в ФФ. Сразу скажу, если есть возможность подсказать в плане данной реализации (ручного создания текста json), то буду очень благодарен. Очень не хочу использовать json_encode, так как, часто переезжаю с сервера на сервер и не везде может быть современный PHP. Код JS: [js] $(document).ready(function(){ if ($("#video_filter").length) { $.getJSON('example.php', function(data) { $("#video_filter").html(data.video[0].nid); }); } }); [/js] example.php: PHP: //выше подключение к БД mysql_query("SET NAMES utf8"); $json = "{\"video\":["; $result = mysql_query('SELECT node_revisions.nid, node_revisions.title, node_revisions.body, term_node.tid, term_data.name FROM term_data LEFT JOIN (node_revisions LEFT JOIN term_node ON node_revisions.nid = term_node.nid) ON term_data.tid = term_node.tid LEFT JOIN node ON node_revisions.nid = node.nid WHERE node.type = "video" ORDER BY created DESC'); while ($node = mysql_fetch_object($result)) { $node->body = mysql_real_escape_string($node->body); $json.= "{\"nid\":\"$node->nid\",\"title\":\"$node->title\",\"body\":\"$node->body\",\"tid\":\"$node->tid\",\"tname\":\"$node->name\"},"; } $json.="]}"; echo $json;
На всякий случай скажу, сайт на Друпале. Консоль в IE ругается на всякие вещи, связанные с кодом других модулей или с самим друпалом ( 'Drupal.settings.cron.runNext' - есть null или не является объектом) Консоль в Opere ругается только на CSS. Консоль в Chrome, вообще, не ругается.
Для проверки в файле example.php заменил строку: PHP: echo $json; на строку: PHP: echo "{\"video\":[{\"nid\":\"1\",\"body\":\"2\"}]}"; Всё заработало. Значит проблема в формировании строки. Знатоки, пожалуйста, подскажите, что неправильно я прописываю, когда формирую строку с json?
Спасибо всем. Проблему решил добавлением после формирования строки следующего кода: PHP: $json = substr($json, 0, strlen($json)-1); Соответственно, проблема заключалась в запятой, которая проставлялась после каждой новой строки. После последней строки запятой быть не должно - кодом её отрезал. Подробно описал на случай, если кто-то будет искать решение подобной проблемы.