Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.02.2010, 13:30
Аспирант
Отправить личное сообщение для Viper Посмотреть профиль Найти все сообщения от Viper
 
Регистрация: 27.09.2008
Сообщений: 88

JSON parser от json.org
На сайте json.org есть парсер. использую его + jq
Что есть...
Есть запрос к серверу отсылаемый в виде
function getIMDB(id) {
	jQuery(document).ready(function($){
		$.nyroModalRemove();
		$.ajax({
			type: "POST",
			url: "index3.php",
			data: "option=com&task=getFromIMDB&tt=0&movie_id="+id+"&no_html=1",
			dataType: "text",
			cache: false,
			success: function(data){
				var myData = JSON.parse(data);
				for(var i=0; i<myData.length; i++) {
					var data = myData[i];
					if (data.error) {
						$(".result").show().text(data.error);
					} else {
						$("[name=\'movie_name2\']").val(data.movie_name);
						$("[name=\'year\']").val(data.year);
						$("[name=\'genre_c\']").val(data.genres);
						$("[name=\'country_c\']").val(data.countries);
						$("[name=\'country_c\']").val(data.countries);
						$("[name=\'slogan\']").val(data.slogan);
						$("[name=\'time\']").val(data.time);
						$("[name=\'stage_manager\']").val(data.dir_by);
						$("[name=\'imdb\']").val(data.rate);
						$("[name=\'rates_imdb\']").val(data.imdb_id);
						$("[name=\'scenario\']").val(data.scenarists);
						$("[name=\'actor\']").val(data.actor);
						$("[name=\'prodyuscer\']").val(data.prod_by);
						$("[name=\'composer\']").val(data.music_by);
						$("[name=\'operator\']").val(data.operators);
					}
				}
			}
		});
	});
}

сервер отвечает строкой в формате json. т.е. [{movie_name:"Transformers"}]
далее в цикле прохожусь по элементам и вставляю значения ключей в соответствующие поля. но при парсинге происходит ошибка
Код:
Ошибка: text.replace is not a function
Источник: http://10.30.96.33/local/administrator/components/com/ajax/json2.min.js
Строка: 1
Поиски в гугле ничего не дали(результаты есть, но решения вопроса нет). Может кто подскажет в чем беда? Или может есть альтернативный safe-string метод разбора json'а?!
Ответить с цитированием
  #2 (permalink)  
Старый 11.02.2010, 13:37
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

JSON.parse('[{"movie_name":"Transformers"}]')

Так тоже ошибку выдает? По RFC, ключи должны быть обернуты в кавычки.
Ответить с цитированием
  #3 (permalink)  
Старый 11.02.2010, 14:59
Аспирант
Отправить личное сообщение для Viper Посмотреть профиль Найти все сообщения от Viper
 
Регистрация: 27.09.2008
Сообщений: 88

Сообщение от e1f Посмотреть сообщение
JSON.parse('[{"movie_name":"Transformers"}]')

Так тоже ошибку выдает? По RFC, ключи должны быть обернуты в кавычки.
обернул ключи в двойные кавычки выдало
Код:
Ошибка: JSON.parse
Источник: http://10.30.96.33/local/administrator/components/com/ajax/json2.min.js
Строка: 1
ответ приехал как
Код:
[{"movie_name":"Transformers: Revenge of the Fallen"},{"year":"2009"},{"genres":"Action|Adventure|Sci-Fi"},{"countries":"USA"},{"slogan":"Revenge is coming."},{"time":"150"},{"dir_by":"Michael Bay"},{"rate":"6.1"},{"imdb_id":"1055369"},{"scenarists:""Ehren Kruger, Roberto Orci, Alex Kurtzman"},{"actors":"Shia LaBeouf, Megan Fox, Josh Duhamel, Tyrese Gibson, John Turturro, Ramon Rodriguez, Kevin Dunn, Julie White, Isabel Lucas, John Benjamin Hickey, Matthew Marsden, Andrew Howard, Michael Papajohn, Glenn Morshower, John Eric Bentley, Erin Naas, Rainn Wilson, Katie Lowes, Jonathon Trent, Walker Howard, America Olivo, Aaron Hill, Jareb Dauplaise, John Sanderford, Christopher Curry, Cas Anvar, Michael Benyaer, Deep Roy, Ruben Martinez, Spencer Garrett, Ralph Meyering Jr., Aaron Norvell, Eric Pierpoint, Annie Korzen, Sean T. Krishnan, David Bowe, Kamal Jones, Aaron Lustig, Jim Holmes, Kristen Welker, Cornell Womack, David Luengas, Derek Alvarado, Alex Fernandez, Casey Nelson, Jason Roehm, John Nielsen, Rick Cramer, Arnold Chun, Marvin Jordan, Marc Evan Jackson, Jayson Floyd, Aaron Garrido, Josh Kelly, Joel Lambert, David Paul Olsen, Geoffrey M. Reeves, Brian Shehan, Bonecrusher the Mastiff, Peter Cullen, Mark Ryan, Reno Wilson, Jess Harnell, Robert Foxworth, Andrй Sogliuzzo, Grey DeLisle, Hugo Weaving, Tony Todd, Charles Adler, Frank Welker, Tom Kenny, Calvin Wimmer, John Di Crosta, Michael York, Kevin Michael Richardson, Robin Atkin Downes, Jennifer An, Robert Bizik, Ted Borodaeff, Mollie Bower, Jerome Ro Brooks, Larry Carter, Kristina Coolish, Robert Corvin, Nick Dash, Caitlin Dulany, Victor Harris, Jordan Hess, Andrew Hwang, Matt Iseman, David Kneeream, Mark Kratzer, Todd A. Langenfeld, Elton Laron, Donald Sage Mackay, Karina Michel, Alan Mueting, Sashen Naicker, Chelsea O\'Toole, Charles Pendelton, Kristen Quintrall, Anne Reiss, Sonny Vellozzi, James Harvey Ward"},{"prod_by":"Kenny Bates, Michael Bay, Ian Bryce, Allegra Clegg, Matthew Cohan, Tom DeSanto, Lorenzo di Bonaventura, Brian Goldner, Michelle McGonagle, Don Murphy, Steven Spielberg, Mark Vahradian"},{"music_by":"Steve Jablonsky"},{"operators":"Ben Seresin"}]

Последний раз редактировалось Viper, 11.02.2010 в 15:04.
Ответить с цитированием
  #4 (permalink)  
Старый 11.02.2010, 15:08
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

У Вас ошибка где-то там:
"missing : after property id"
Внимательно просмотрите код.

UPD
{"scenarists:""Ehren Kruger, Roberto Orci, Alex Kurtzman"}

Ололо!
Ответить с цитированием
  #5 (permalink)  
Старый 12.02.2010, 09:45
Аспирант
Отправить личное сообщение для Viper Посмотреть профиль Найти все сообщения от Viper
 
Регистрация: 27.09.2008
Сообщений: 88

поправил, но не помогло. порывшись по странным форумам возникло подозрение на то что проблема в \ в значениях ключа. но как иначе экранировать одинарную кавычку(и)? переводить всё в \\u... ???
Ответить с цитированием
  #6 (permalink)  
Старый 12.02.2010, 10:49
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Тестовую страницу со всеми скриптами в студию. Ваш пример json'a, посл фикса кавычки, парсится как надо, пример здесь
Ответить с цитированием
  #7 (permalink)  
Старый 12.02.2010, 12:43
Аспирант
Отправить личное сообщение для Viper Посмотреть профиль Найти все сообщения от Viper
 
Регистрация: 27.09.2008
Сообщений: 88

вот проблема то в том что на тестовой странице все работает, а в проекте нет. а кусок проекта вырезать не смогу в ответе убрал уже все зарезервированные символы описанные на json.org
после фикса кстати стало опять ругаться на text.replace is not a function...

Черте что и с боку ручка...
Ответить с цитированием
  #8 (permalink)  
Старый 12.02.2010, 13:26
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Пфф. Ну ясно же говорит:
text.replace is not a function
Скорее всего, text -- undefined.
if (/^[\],:{}\s]*$/.
test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
// in JavaScript: it can begin a block or an object literal. We wrap the text
// in parens to eliminate the ambiguity.

                j = eval('(' + text + ')');

// In the optional fourth stage, we recursively walk the new structure, passing
// each name/value pair to a reviver function for possible transformation.

                return typeof reviver === 'function' ?
                    walk({'': j}, '') : j;
            }

Заверните это в try/catch, поищите еще, где есть. Подебажте, найдите, где именно появляется проблема.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить элемент в обьект json Юрий Игоревич Общие вопросы Javascript 2 26.10.2009 15:01
Jquery, Dynatree и JSON antirek jQuery 6 01.09.2009 15:00
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36
treeview и JSON PANKOFF jQuery 2 21.05.2009 14:46
Json и PHP spar AJAX и COMET 7 30.10.2008 20:11