Как решить проблему ошибки 'Invalid Label' при работе с JSON-строкой?
Каждый раз когда мне нужно работать с AJAX я использую javascript-библиотеку jQuery и PHP в качестве серверного языка программирования. Так как в версиях PHP больше 5.2.0 присутствует функция json_encode(), я использую JSON в каждом случае передачи данных между Javascript и PHP. Кроме того, $.get и $.post легко работают с JSON, поэтому я всегда испольую этот тип данных.
Как бы то нибыло, иногда я не могу положится на выполнение рутинной работы за меня методами $.get и $.post. К примеру, когда я использую скрытый iframe, чтобы загрузить файл на сервер с помощью AJAX. Чтобы это сделать форма сабмитит файл на серверный скрипт. Скрипт загружается в скрытом iframe, поэтому пользователи не видят что происходит за кулисами. Как только загрузка завершена, скрипт возвращает некоторую информацию о файле в iframe (имя файла, путь, размер и т.д.). Дальше можно использовать Javascript, чтобы получить эту информацию.
Мой серверный скрипт всегда возвращает валидную JSON строку. Я использую эти данные, которые получаются из iframe, чтобы узнать успешно ли загружен файл и, если нет, какая ошибка возникла. В случае успешной загрузки мне нужно знать имя файла, размер и путь к нему. Информация, получающаяся в iframe, обычно выглядит так:
{"filename":"file.ext","size":"2516582","location":"\/path\/to\/file\/file.ext"}
Для распарсивания JSON строки в объект Javascript я использую eval(). (Некоторые предпочитают использовать JSON parser, но так как вывод скрипта строго подконтролен, я не вижу в этом особой надобности.) Увы, когда Javascript выполняет строку, возникает ошибка "invalid label".
Эта ошибка — результат интерпретации функцией eval() первой части строки в качестве label. Такая ошибка возникает каждый раз, но ее удивительно легко избежать. Просто оберните JSON-строку в скобки внутри eval():
var response = eval( '(' + jsonString + ')' );
Это одна из многих Javascript "gothas", и я надеюсь она может сэкономить кодерам много времени.
Author: Cory S.N. LaViska
July 16, 2008
Оригинал Parsing a JSON String Results in an ‘Invalid Label’ Error
Комментарии
у меня работало и без скобок, но тут всплыла такая пробема.. спасибо за решение!)
У меня проблема в том что не вызывается колбек функция, а без скобок выдает ошибку Invalid Label
jquery 1.3.2
код
var surl;
surl = 'http://sc.domainn.ua/comment/get.php?type=json&aid=56873&callback=?';
$.getJSON(surl, function(data) {
alert('');
})
кто то что то может подсказать?