0

我在 Flash 上有一个模拟移动应用程序的代码:

package  
{

import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.*;
import flash.net.*;
import com.adobe.serialization.json.*;

public class ScreenCategories extends Sprite 
{

    private var lastButtonEndedY:int;
    private var categories:Array;
    private var dataUrl:String = "getCategories.php";

    // Change this to false to use local static data instead;
    private var useRemoteData:Boolean = true;

    // Constructor: Create an array of three categories
    public function ScreenCategories()
    {
        lastButtonEndedY = 35;

        if ( useRemoteData )
        {
            loadCategories();
        }
    }

    public function loadCategories():void
     {
        var request:URLRequest = new URLRequest(dataUrl);
        var loader:URLLoader = new URLLoader();
        loader.dataFormat = URLLoaderDataFormat.TEXT;
        loader.addEventListener(Event.COMPLETE, categoryLoad_complete);
        loader.load(request);
     }

     private function categoryLoad_complete(evt:Event):void
     {
        var jsonText:String = evt.target.data;

        //Deserialize JSON
        categories = JSON.decode(jsonText) as Array;   
    }

    private function initializeCategory():void
    {
        // for each "category" in our list (Array)...
        for (var count in categories)
        {
            // Create a button for each of the categories that exist in our Array
            var aCategory:BtnCategory = new BtnCategory(categories[count].category);

            // Add the BtnCategory to the stage
            aCategory.x = 0;
            aCategory.y = lastButtonEndedY;
            aCategory.name = categories[count].id; // give it a unique name!
            addChild(aCategory);

            lastButtonEndedY += (aCategory.getHeight() + 1);
        }

        addEventListener(MouseEvent.CLICK, mouseClicked);
    }

    public function mouseClicked(e:MouseEvent)
    {
        removeEventListener(MouseEvent.CLICK, mouseClicked);

        // trace the name of the button that was pressed, in this case - the category number!
        var btnPressed:int = parseInt(e.target.name);

        // if the category exists in the Array (ie. not undefined), then display that category!
        if (categories[btnPressed] != undefined)
        {
            displayCategory(btnPressed)
        }

        addEventListener(MouseEvent.CLICK, mouseClicked);
    }

    // We want to go forward to see the list of products in this category, call back to Main.as so make that happen.
    public function displayCategory(categoryId)
    {
        trace ("display product category:" + categoryId);
        var par:* = parent;
        par.displayCategory(categoryId);
    }

}

}

但我收到以下错误:

**JSONParseError: Unexpected < encountered
    at com.adobe.serialization.json::JSONTokenizer/parseError()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONTokenizer.as:704]
    at com.adobe.serialization.json::JSONTokenizer/getNextToken()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONTokenizer.as:206]
    at com.adobe.serialization.json::JSONDecoder/nextToken()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONDecoder.as:102]
    at com.adobe.serialization.json::JSONDecoder()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONDecoder.as:71]
    at com.adobe.serialization.json::JSON$/decode()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSON.as:95]
    at ScreenCategories/categoryLoad_complete()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/ScreenCategories.as:45]
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at flash.net::URLLoader/onComplete()**
4

1 回答 1

1

您可能从 getCategories.php 收到无效的 JSON。

尝试在浏览器中运行 getCategories.php 脚本(通过在地址栏中粘贴(完整)URL)并将获得的 JSON 复制到jsonlint验证器中。这应该让您对任何无效的事情有所了解。

有关有效 JSON 的定义,请查看json.org

于 2012-07-11T21:45:07.557 回答