我试图从我的SQL数据库返回结果,使用PHP将其转换为JSON,然后由Flex读取。
这是我收到的解析错误-
在com.adobe.serialization.json::JSONTokenizer/parseError()/Users/mesh/src/as3corelib/src/com/adobe/serialization/json/JSONTokenizer.as:579 at com.adobe.serialization.json::JSONTokenizer/getNextToken()/Users/mesh/src/as3corelib/src/com/adobe/serialization/json/JSONTokenizer.as:168 at com.adobe.serialization.json::JSONDecoder/nextToken()/Users/mesh/src/as3corelib/src/com遇到的意外<
JSONParseError/adobe/序列化/json/json/jsondecoder.as:83 at com.adobe.serialization.json::JSONDecoder()/Users/mesh/src/as3corelib/src/com/adobe/serialization/json/JSONDecoder.as:60 at com.adobe.serialization.json::JSON$/decode()/Users/mesh/src/as3corelib/src/com/adobe/serialization/json/JSON.as:78 at main/getPHPData()C:\wamp\www\ClassDB\src\main.mxml:25 atmain/__getData_result()C:\wamp\www\ClassDB\src\main.mxml:58 at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.rpc.http.mxml::HTTPService/[http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[C](http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent(%29[C):\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\http\mxml\HTTPService.as:290] at mx.rpc::AbstractInvoker/[http://www.adobe.com/2006/flex/mx/internal::resultHandler()[C](http://www.adobe.com/2006/flex/mx/internal::resultHandler(%29[C):\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:193] at mx.rpc::Responder/result()C:\autobuild\3.2.0\frameworks\projects\rpc\srcmx.rpc::AsyncRequest/acknowledge()C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:74 at DirectHTTPMessageResponder/completeHandler()C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\DirectHTTPChannel.as:403 at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at fl.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";
}
?>我完全不知所措,不知从哪里出发。对正确方向的任何帮助或暗示都将不胜感激!
发布于 2009-10-12 02:39:24
我认为问题在于您没有“返回”(打印出)有效的json,这正是actionscript类所期望的。据我所知,PHP脚本要么什么也不返回,要么字符串“数据库更新”,这两个都不是有效的JSON。
我不知道actionscript方面是否对它会收到什么有特殊的期望。如果没有,只需打印出字符串"{}“就足够了;这将是一个空的JSON对象。
https://stackoverflow.com/questions/1232637
复制相似问题