Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.06.2010, 19:48
Аспирант
Отправить личное сообщение для GRIG Посмотреть профиль Найти все сообщения от GRIG
 
Регистрация: 26.03.2010
Сообщений: 55

Синтаксис возвращаемого JSON-объекта - как правильно?
Привет всем! Помогите разобраться - я себе уже мозги сломал.
Ситуация такая. Гружу страницу со своими скриптами. На странице есть такой код:
$(document).ready( function() {
  jQuery.getJSON('src/db-uis2.php', { action: "init" }, evDBUisLst );
});

При выполнении этого кода на сервер посылается запрос. В ответ сервер присылает следующий текст:
{ uis_list : [ { uis_id : 1, name : "tm1" }, { uis_id : 2, name : "tm2" }, { uis_id : 3, name : "tm3" }, { uis_id : 4, name : "tm4" }, { uis_id : 5, name : "tm5" } ], resp: 'OK' }

После этого на моей странице должен выполняться некий код, который должен превратить эти данные в список выбора. Но почему-то этот код не выполняется. Смотрел на связке Мозилла+Файрбаг - функция-обработчик завершения операции даже не вызывается.
Но прикол в том, что если сервер чуть-чуть поправить и сделать так, чтобы он вернул такой текст:
{ "uis_list" : [ { "uis_id" : "1", "name" : "tm1" }, { "uis_id" : "2", "name" : "tm2" }, { "uis_id" : "3", "name" : "tm3" }, { "uis_id" : "4", "name" : "tm4" }, { "uis_id" : "5", "name" : "tm5" } ], "resp": "OK" }

(который отличается от первоначального варианта только большим количеством двойных кавычек), то все проходит нормально.
Такое впечатление, что ошибка происходит на этапе преобразования ответа сервера в объект. JQuery по каким-то причинам не может это сделать, считает, что операция закончилась неудачей и не вызывает обработчик завершения. Но в чем эта ошибка состоит - непонятно. Никакой диагностики не вижу.
Что я делаю неправильно???
Ответить с цитированием
  #2 (permalink)  
Старый 10.06.2010, 20:13
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

почитай-ка документацию, да?
http://www.json.org/json-ru.html
особенно белую схему справа
Цитата:
object
{}
{ members }
members
pair
pair , members
pair
string : value
..........................
string
""
" chars "
то есть строка ОБЯЗАНА быть в двойных кавычках
Ответить с цитированием
  #3 (permalink)  
Старый 11.06.2010, 10:24
Аспирант
Отправить личное сообщение для GRIG Посмотреть профиль Найти все сообщения от GRIG
 
Регистрация: 26.03.2010
Сообщений: 55

Про кавычки вокруг строки, которая является значением, вопросов нет. А вот насчет кавычек вокруг строки-имени есть сомнения. Дело в том, что в другом моем проекте, который я делал примерно месяц назад и с тех пор благополучно забыл, все нормально работало без таких кавычек. А тут не работает. И почему - непонятно.
А за ссылку на доку - спасибо.
Ответить с цитированием
  #4 (permalink)  
Старый 11.06.2010, 10:25
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от GRIG
А вот насчет кавычек вокруг строки-имени есть сомнения.

Не важно, имя или значение. Важно -- строка.
Ответить с цитированием
  #5 (permalink)  
Старый 11.06.2010, 10:39
Аспирант
Отправить личное сообщение для GRIG Посмотреть профиль Найти все сообщения от GRIG
 
Регистрация: 26.03.2010
Сообщений: 55

Кажется, я разобрался в чем дело. Дело в версии JQuery. Проект, о котором я сейчас говорю, я получил от другого разработчика. И там уже использовалась версия 1.4.2. А в том, про который я сказал "сделал месяц назад и забыл" - там использовалась версия 1.3.2. Когда я в нынешнем проекте сделал даунгрейд JQuery на версию 1.3.2 - синтаксис без кавычек вокруг имен отработал нормально.
Нда... Кто ж его знал...
Ответить с цитированием
  #6 (permalink)  
Старый 11.06.2010, 10:43
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от GRIG
синтаксис без кавычек вокруг имен отработал нормально.
Потому что в старых версиях не честный парсинг JSON, а тупо eval. Лучше всё-таки кавычки поставить. А ещё лучше воспользоваться PHP-функцией json_encode.
Ответить с цитированием
  #7 (permalink)  
Старый 11.06.2010, 10:55
Аспирант
Отправить личное сообщение для GRIG Посмотреть профиль Найти все сообщения от GRIG
 
Регистрация: 26.03.2010
Сообщений: 55

Спасибо, не знал.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как правильно оформить код frolvict Общие вопросы Javascript 4 30.04.2010 10:51
JSON. Как в callback функции изменить свойство объекта? master_alf jQuery 10 22.04.2010 17:08
Как правильно прописать свой код в .js Всеми_Любимый Элементы интерфейса 6 23.02.2010 21:34
Как по событию вызвать метод определенного экземпляра объекта jvs jQuery 3 24.12.2009 16:04
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20