Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.05.2016, 14:32
dendead вне форума Посмотреть профиль Отправить личное сообщение для dendead Найти все сообщения от dendead
  № 1  
Ответить с цитированием
dendead

Регистрация: Aug 2013
Сообщений: 73
По умолчанию Обработка JSON от php

Добрый день.

Решил восстановить свой старый проект, в котором была настроена связь между сервером на php и as3 приложением.
На сервере отправлял данные подобным образом:
PHP код:
$load_array = (array("array" => "loadArray""name" => $name"money" => $money"level" => $level));
echo 
json_encode($load_array); 
И получал приложением:
Код AS3:
            private function loadData():void
		{
			loader = new URLLoader();
			stat_request = new URLRequest("http://t/index_load.php");
			stat_request.method = URLRequestMethod.POST;
 
			vars = new URLVariables();
 
			stat_request.data = vars;
 
			try 
			{ 
				loader.load(stat_request);
            }  
            catch (e:Error)
			{ 
				trace("\n\nОшибка загрузки\n " + e.message + "\n\n");
            } 		
			loader.addEventListener(Event.COMPLETE, onComplete);
		}
 
		private function onComplete(e:Event):void
		{						
			var output:Object = checkJSON(e.target.data, 'onComplete');
			e.target.removeEventListener(Event.COMPLETE, onComplete);
		}
 
            private function checkJSON(data:String, funcName:String):Object
		{
			try
			{ 
				var output:Object = com.adobe.serialization.json.JSON.decode(data); 
            }  
            catch (e:Error)
			{ 
				trace("\n\nНе удалось преобразовать строку JSON " + " в\n " + funcName + 
					  e.message + "\n\n");
				output = null;
            } 
			return output;
		}
Всё работало хорошо, но сейчас появляется ошибка:
Не удалось преобразовать строку JSON в
loadDataUnexpected encountered

С сервера приходит строка такого типа:
Код AS3:
{"array":"loadArray","name":"Test","money":100,"level":0,"":{"description1":"\u0412\u0442\u043e\u0440\u0430\u044f \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430","attack1":0,"protect1":4,"description2":"\u0421\u0435\u043c\u044c","attack2":1,"protect2":2,"description3":"\u041f\u0435\u0440\u0432\u0430\u044f \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430","attack3":1,"protect3":2,"description4":"\u0414\u0435\u0441\u044f\u0442\u044c","attack4":4,"protect4":4,"description5":"\u0422\u0440\u0435\u0442\u044c\u044f \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430","attack5":1,"protect5":1,"description6":"\u0427\u0435\u0442\u044b\u0440\u0435","attack6":1,"protect6":2,"description7":"\u041f\u044f\u0442\u044c","attack7":0,"protect7":4,"description8":"\u0414\u0435\u0432\u044f\u0442\u044c","attack8":1,"protect8":3,"description9":"\u0412\u043e\u0441\u0435\u043c\u044c","attack9":1,"protect9":4,"description10":"\u0422\u0440\u0438\u043d\u0430\u0434\u0446\u0430\u0442\u044c","attack10":5,"protect10":1}}
Пробовал менять версию плеера и указывать
Код AS3:
var output:Object = JSON.parse(e.target.data);
появляется ошибка:
Код AS3:
SyntaxError: Error #1132: Invalid JSON parse input.
Подскажите пожалуйста, в чём может быть проблема?

Старый 15.05.2016, 15:33
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 2  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Цитата:
"":{"description1":"
Почему у этого массива пустое название?

Старый 15.05.2016, 15:44
dendead вне форума Посмотреть профиль Отправить личное сообщение для dendead Найти все сообщения от dendead
  № 3  
Ответить с цитированием
dendead

Регистрация: Aug 2013
Сообщений: 73
Прошу прощения, вот такой вывод:
Код AS3:
{"array":"loadArray","name":"Test","money":100,"level":0}
Если скопировать строку в json парсер, то выдаётся ошибка:
SyntaxError: Unexpected token  in JSON at position 0
http://json.parser.online.fr/

Именно строку, которую я получаю в as3.
Код AS3:
{"array":"loadArray","name":"Test","money":100,"level":0}
Стандартный Блокнот добавляет эти символы к выводу. Можно сохранить php файлы, например, в Nodepad++ в другой кодировке (UTF без BOM). Решает проблему.


Последний раз редактировалось dendead; 15.05.2016 в 16:02.
Старый 15.05.2016, 18:15
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Абсолютно валидный джейсон. У меня все норм. И валидатор тоже проблем не находит http://jsonlint.com/
попробуй так напичать
Код AS3:
JSON.parse(String(unescape(data)))
, хотя вряд ли конечно это поможет
__________________
Ко мне можно и нужно обращаться на ты)


Последний раз редактировалось caseyryan; 15.05.2016 в 18:47.
Старый 15.05.2016, 23:05
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 5  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Ютф-8 все-таки должен быть везде?
Ну и русские символы http://flasher.ru/forum/showthread.php?t=171823 тут несколько решений.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 16.05.2016, 09:44
dendead вне форума Посмотреть профиль Отправить личное сообщение для dendead Найти все сообщения от dendead
  № 6  
Ответить с цитированием
dendead

Регистрация: Aug 2013
Сообщений: 73
Проблема решилась сохранением php файлов в кодировке (UTF без BOM), как я и писал ранее.
Спасибо!

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:47.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.