Ошибка синтаксического анализа JSON при использовании Adobe Flex - PHP - SQL - PullRequest
0 голосов
/ 05 августа 2009

Я пытаюсь вернуть результаты из моей базы данных SQL, используя PHP для преобразования его в JSON, который затем читается Flex.

Вот ошибка синтаксического анализа, которую я получаю -

JSONParseError: неожиданно <обнаружено на com.adobe.serialization.json :: JSONTokenizer / parseError () [/ Users / сетка / SRC / as3corelib / SRC / COM / саман / сериализации / JSON / JSONTokenizer.as: 579] в com.adobe.serialization.json :: JSONTokenizer / getNextToken () [/ Users / сетка / SRC / as3corelib / SRC / COM / саман / сериализации / JSON / JSONTokenizer.as: 168] в com.adobe.serialization.json :: JSONDecoder / nextToken () [/ Users / сетка / SRC / as3corelib / SRC / COM / саман / сериализации / JSON / JSONDecoder.as: 83] в com.adobe.serialization.json :: JSONDecoder () [/ Users / сетка / SRC / as3corelib / SRC / COM / саман / сериализации / JSON / JSONDecoder.as: 60] в com.adobe.serialization.json :: JSON $ / декодирование () [/ Users / сетка / SRC / as3corelib / SRC / COM / саман / сериализация / JSON / JSON.as: 78] в main / getPHPData () [C: \ wamp \ www \ ClassDB \ src \ main.mxml: 25] в main / __ getData_result () [C: \ wamp \ www \ ClassDB \ src \ main.mxml: 58] в flash.events::EventDispatcher/dispatchEventFunction () в flash.events::EventDispatcher/dispatchEvent () в mx.rpc.http.mxml :: HTTPService / <a href="http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[C" rel="nofollow noreferrer">http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\http\mxml\HTTPService.as:290] в mx.rpc :: AbstractInvoker / http://www.adobe.com/2006/flex/mx/internal::resultHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:193] в mx.rpc :: Ответчик / результат (а) [C: \ автосборки \ 3.2.0 \ рамки \ проекты \ RPC \ SRC \ х \ \ RPC Responder.as: 43] в mx.rpc :: AsyncRequest / квитирования () [C: \ автосборки \ 3.2.0 \ рамки \ проекты \ RPC \ SRC \ тх \ RPC \ AsyncRequest.as: 74] в DirectHTTPMessageResponder / completeHandler () [C: \ автосборки \ 3.2.0 \ рамки \ проекты \ RPC \ SRC \ тх \ сообщениями \ каналы \ DirectHTTPChannel.as: 403] на flash.events::EventDispatcher/dispatchEventFunction () на flash.events::EventDispatcher/dispatchEvent () в flash.net::URLLoader/onComplete()

А вот PHP, который я использую -

<?php

if (isset($_GET['getclassdb']))
    {
    mysql_connect($URL, $USERNAME, $PASSWORD);
    mysql_select_db($DATABASE) or die('Cannot connect to database.');
    $returnArray = array();
    $query = 'SELECT * FROM classdb';
    $result = mysql_query($query);
    while ($row = mysql_fetch_assoc($result))
        {
        array_push($returnArray, $row);
        }

    mysql_close();
    echo json_encode($returnArray);
    }
elseif (isset($_GET['setclassdb']))
    {
    $jsonString = urldecode($_GET['jsonSendData']);
    $jsonString = str_replace("\\", "", $jsonString);
    $data = json_decode($jsonString, true);
    mysql_connect($URL, $USERNAME, $PASSWORD);
    mysql_select_db($DATABASE) or die('Cannot connect to database.');
    foreach($data as $classdbEntry)
        {
        $query = sprintf('UPDATE Tutorials SET rating = "%s" WHERE id = "%s"', mysql_real_escape_string($classdbEntry['rating']) , mysql_real_escape_string($classdbEntry['id']));
        $result = mysql_query($query);
        if (!$result)
            {
            mysql_close();
            echo mysql_error();
            return;
            }
        }

    mysql_close();
    echo "database updated";
    }

?>

Я в полной растерянности, куда мне идти отсюда. Любая помощь или советы в правильном направлении будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 12 октября 2009

Я полагаю, что проблема в том, что вы не «возвращаете» (распечатываете) действительный json, чего ожидает класс actionscript. Насколько я могу судить, ваш PHP-скрипт либо вообще ничего не возвращает, либо строка «база данных обновлена», ни одна из которых не является допустимой JSON.

Я не знаю, есть ли у ActionScript особые ожидания относительно того, что он получит. Если этого не произойдет, может быть достаточно просто распечатать строку "{}"; это был бы пустой объект JSON.

0 голосов
/ 05 августа 2009

Вы пытались открыть php в браузере и посмотреть, имеет ли вывод правильный синтаксис json ... если вы используете firefox, то дополнение JSONView должно помочь в поиске ошибок json ..

...