2009-08-05 6 views
0

J'essaie de retourner les résultats de ma base de données SQL, en utilisant PHP pour le convertir en JSON, qui est ensuite lu par Flex.JSON Parse Erreur lors de l'utilisation d'Adobe Flex - PHP - SQL

Voici l'erreur d'analyse que je reçois -

JSONParseError: Unexpected < encountered at 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/adobe/serialization/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] at main/__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 :\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 :\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\src\mx\rpc\Responder.as:43] at mx.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 flash.net::URLLoader/onComplete()

Et est le PHP ici, je suis en utilisant -

<?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"; 
    } 

?> 

Je suis à une perte complète à l'endroit où aller d'ici. Toute aide ou conseils dans la bonne direction serait grandement appréciée!

Répondre

0

Avez-vous essayez d'ouvrir le php dans un navigateur et voir si la sortie est en syntaxe JSON ... si vous utilisez Firefox, puis JSONView add-on devrait être d'aider à trouver les erreurs de JSON ..

0

Je crois que le problème est que vous ne «retournez» pas (impression) json valide, ce qui est attendu par la classe actionscript. Autant que je peux dire que votre script PHP ne retourne rien du tout, ou la chaîne "base de données mise à jour" dont aucun n'est valide JSON.

Je ne sais pas si le côté actionscript a des attentes particulières quant à ce qu'il recevra. Si ce n'est pas le cas, il suffit d'imprimer la chaîne "{}". ce serait un objet JSON vide.