Отображение JSON во флэш-памяти - PullRequest
0 голосов
/ 16 ноября 2010

Я пытаюсь загрузить данные во флэш-память, используя JSON, но получаю эту ошибку

JSONParseError: Unexpected < encountered
 at com.adobe.serialization.json::JSONTokenizer/parseError()
 at com.adobe.serialization.json::JSONTokenizer/getNextToken()
 at com.adobe.serialization.json::JSONDecoder/nextToken()
 at com.adobe.serialization.json::JSONDecoder()
 at com.adobe.serialization.json::JSON$/decode()
 at jsonairtest_fla::MainTimeline/decodeJSON()
 at flash.events::EventDispatcher/dispatchEventFunction()
 at flash.events::EventDispatcher/dispatchEvent()
 at flash.net::URLLoader/onComplete()

, хотя я могу запустить pp-файл в браузере, и вывод выглядит нормально для меня, я даже попытался вызвать txt-файл, и это сработало, но я не знаю, что я делаю здесь неправильно.

Вот код AS3

 import com.adobe.serialization.json.JSON

    var loader:URLLoader = new URLLoader();
    var request:URLRequest = new URLRequest();


    request.url = "pull.php";
    loader.load(request);

    loader.addEventListener(Event.COMPLETE, decodeJSON);


    function decodeJSON(event:Event):void{
    var loader2:URLLoader = URLLoader(event.target);
    //trace(event.target.data);
    var People:Array = JSON.decode(loader2.data);

    trace(People[0].NETWORKNAME) ; 
    trace(People[1].NETWORKNAME) ; 

      }

PHP код:

 <?php

       $host="localhost";
       $user="";
       $password="";
       $database="db name";
       $tablename="table name";

       header('Content-type: application/json');

       if(!$connection = mysql_connect($host,$user,$password))
        {
            //if connection not eastablished then display message and die
            $message = mysql_error();
            //echo "$message<br>";
            die();
        }else
        // in case the connection is eastablished 
        $message = "Connection eastablished.....";
        //echo"$message<br>";
         mysql_select_db($database,$connection)
            or die("database not found");
         $query = mysql_query("SELECT NETWORKNAME from $tablename);
        $returnArray = array(); 
         while($row=mysql_fetch_assoc($query))
         array_push($returnArray, $row);

        mysql_close();
        echo json_encode($returnArray);

    ?>

Ответы [ 3 ]

2 голосов
/ 16 ноября 2010

Чтобы преобразовать ответ в массив недекодированных объектов JSON, попробуйте следующее:

var jsonArray:Array = loader2.data.match(/\{.*?\}/gi);

Затем просто переберите вызов JSON.decode для каждого члена массива. :)

1 голос
/ 17 ноября 2010

В сообщении об ошибке говорится, что < в неожиданной позиции.

Я предполагаю, что вы случайно читаете свой php из файловой системы, а не запускаете его на сервере. Ваш файл не выполняется как код php, и <, вероятно, является открывающим тегом вашего php-скрипта (<? или <?php).

Если вы запускаете этот код из IDE, ваш URL должен выглядеть примерно так:

htp://localhost/my_project/pull.php

Если вы запускаете это в браузере, вам не нужен абсолютный путь, но убедитесь, что ваш swf работает в среде http (которая, конечно, может выполнять php). То есть, проверьте это так:

http://localhost/my_project/index.php 

(где index.php - файл hmtl, который встраивает ваш swf)

1 голос
/ 16 ноября 2010

В выводе php вы устанавливаете тип заголовка на json?

header('Content-type: application/json');

Ваш декодер может нуждаться в правильном типе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...