Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Обработка JSON от php (http://www.flasher.ru/forum/showthread.php?t=212849)

dendead 15.05.2016 14:32

Обработка 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.

Подскажите пожалуйста, в чём может быть проблема?

Godwarlock 15.05.2016 15:33

Цитата:

"":{"description1":"
Почему у этого массива пустое название?

dendead 15.05.2016 15:44

Прошу прощения, вот такой вывод:
Код 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). Решает проблему.

caseyryan 15.05.2016 18:15

Абсолютно валидный джейсон. У меня все норм. И валидатор тоже проблем не находит http://jsonlint.com/
попробуй так напичать
Код AS3:

JSON.parse(String(unescape(data)))

, хотя вряд ли конечно это поможет

GBee 15.05.2016 23:05

Ютф-8 все-таки должен быть везде?
Ну и русские символы http://flasher.ru/forum/showthread.php?t=171823 тут несколько решений.

dendead 16.05.2016 09:44

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


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

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