闪光灯

问题描述:

显示JSON,我试图拉使用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() 

即使我可以RUNT 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); 

    ?> 
+0

你能告诉我们的JSON的样本形成的PHP输出? – 2010-11-16 17:03:10

+0

这里是php输出 – hitek 2010-11-16 17:06:57

+0

[{“NETWORKNAME”:“abc”},{“NETWORKNAME”:“xyz”}] – hitek 2010-11-16 17:07:47

要转换成响应未解码JSON对象的数组,尝试。 :)

+0

我试过这个,我什么也没得到 var jsonArray:Array = loader2.data.match(/\{.*?\}/ gi); var people = new Array(); (var i = 0; i hitek 2010-11-16 18:26:31

+0

对不起,它可能需要var jsonArray:Array = String(loader2.data).match(/\{.*?\}/ gi); - 如果这不起作用,请尝试追踪每个属性以查看发生了什么问题(我会尝试自己,但是我在家庭计算机上处​​于格式化的中间!) – adamk 2010-11-16 18:47:34

+0

还没有发生任何事情:( – hitek 2010-11-16 19:10:26

在你的PHP输出,你要为你的头型,以JSON?

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

您的解码器可能需要该类型才是正确的。通过调用JSON.decode阵列的每个元件上

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

然后简单循环:

+0

设置了头之后我得到这个[ - { NETWORKNAME: “ABC” } - { NETWORKNAME: “XYZ” }] – hitek 2010-11-16 17:10:10

+0

我没有看到你的代码贴.. – wajiw 2010-11-16 17:11:03

+0

这是因为你的格式就像一个数组,而不是json。尝试使用它,就像我上面的评论:{'NETWORKNAME':['abc',xyz']} – wajiw 2010-11-16 17:14:02

错误消息说有一个意想不到的位置<

我的猜测是,你无意中从文件系统中读取你的php,而不是在服务器上运行它。您的文件不能作为php代码执行,并且<可能是您的php脚本的开始标记(<?<?php)。

如果您正在运行从IDE这个代码,您的网址应该是这样的:

htp://localhost/my_project/pull.php 

如果你在浏览器中运行这个,你并不需要一个绝对路径,但要确保您的SWF在http环境下运行(当然可以执行php)。也就是说,测试它是这样的:

http://localhost/my_project/index.php 

(其中的index.php是嵌入你的SWF文件HMTL)