1

私は現在、ActionScript 3 で AMFPHP を実験しています。すべてうまくいっていますが、データベースにデータを挿入すると次のエラーが発生しますが、データはデータベースに挿入されます。

最初に PHP のコードの下に:

<?php 
public function setColor($kleur){
  mysql_query("INSERT INTO kleuren (kleuren) VALUES ("'.$kleuren."')");
  return $kleur;
?>

今のところセキュリティの問題は無視してください。SQL インジェクションについては最新の状態ですが、それは今のところ重要ではありません。

私の AS3 コードは次のようになります。

import fl.controls.Button;
import fl.events.ComponentEvent;
import flash.display.Stage;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.net.NetConnection;
import flash.net.Responder;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFieldAutoSize;

/**

MidasSerialComm 2.6.1

Attributes
    input
        a value which receives from serial port.

Methods
    serIn()
        Returns a String value read from serial port.
    serOut(String arg)
        Send "arg" to serial port.
        No return value.

*/

// The belows are parameters for configuration of module
midas.commport="COM4"; // necessary field
//midas.baudrate="9600";;
//midas.parity="n";
//midas.databit="8";
//midas.stopbit="1";
//midas.eof="ascii 13";
//midas.stx="null";
//midas.etx="null";
//midas.debug=false;
midas.serverip="localhost"; // necessary field
midas.serverport="8864"; // necessary field

midas.visible = false;

//knoppen rood , groen en blauw opzetten

var roodLampje:Sprite = new Sprite();
roodLampje.graphics.beginFill(0xFF0000);
roodLampje.graphics.drawRect(stage.stageWidth / 2 + -150, stage.stageHeight / 2, 60, 40);
roodLampje.buttonMode = true;
addChild(roodLampje);

var groenLampje:Sprite = new Sprite();
groenLampje.graphics.beginFill(0x00FF00);
groenLampje.graphics.drawRect(stage.stageWidth / 2 + -80, stage.stageHeight / 2, 60, 40);
groenLampje.buttonMode = true;
addChild(groenLampje);

var blauwLampje:Sprite = new Sprite();
blauwLampje.graphics.beginFill(0x0000FF);
blauwLampje.graphics.drawRect(stage.stageWidth / 2 + -10, stage.stageHeight / 2, 60, 40);
blauwLampje.buttonMode = true;
addChild(blauwLampje);


var zetLampjeUit:Sprite = new Sprite();
zetLampjeUit.graphics.beginFill(0x000000);
zetLampjeUit.graphics.drawRect(stage.stageWidth / 2 + 60, stage.stageHeight / 2, 60, 40);
zetLampjeUit.buttonMode = true;
addChild(zetLampjeUit);

//kleuren 

var rood:String = "Rood";
var groen:String = "Groen";
var blauw:String = "Blauw";

var huidigKleur:String;
var netConnection:NetConnection;
var responder:Responder;

//click events toevoegen aan buttons
roodLampje.addEventListener(MouseEvent.CLICK, onRoodClick);
groenLampje.addEventListener(MouseEvent.CLICK, onGroenClick);
blauwLampje.addEventListener(MouseEvent.CLICK, onBlauwClick);
zetLampjeUit.addEventListener(MouseEvent.CLICK, onUitClick);

//connectie met service
netConnection = new NetConnection();
netConnection.connect("http://navidmirzaie.com/amfphp/gateway.php");
responder = new Responder(onResult, onFault);


var t:TextField;
var textFormat:TextFormat = new TextFormat("Verdana",14,0x000000);


midas.ondata = function(msg){


    switch(msg){
        case "49":
            huidigKleur = rood;
            netConnection.call("ArduinoTest.setColor",responder,huidigKleur);
            //trace(huidigKleur);
        break;

        case "50":
            huidigKleur = groen;
            netConnection.call("ArduinoTest.setColor",responder,huidigKleur);
            //trace(huidigKleur);
        break;

        case "51":
            huidigKleur = blauw;
            netConnection.call("ArduinoTest.setColor",responder,huidigKleur);
            //trace(huidigKleur);
        break;

        case "48":

        break;

    }   


}


//click handlers, reageer op de gedrukte knop
function onRoodClick(eventObj:MouseEvent):void {
    midas.output("1");
    //trace("er is op rood geklik");
}

function onGroenClick(eventObj:MouseEvent):void {
    midas.output("2");
    //trace("er is op groen geklik");
}

function onBlauwClick(eventObj:MouseEvent):void {
    midas.output("3");
    //trace("er is op blauw geklik");
}

function onUitClick(eventObj:MouseEvent):void {
    midas.output("0");
    //trace("er is op blauw geklik");
}

//data afhandeling post
function onResult(responds:Object){

    var t:Array = new Array();
    t = responds.serverInfo.initialData;
    //var t:Array = responds.serverInfo.initialData;
    trace(t.length);

    /*
    for(var i:uint = 0; i < t.length; i++){
        trace("Aantal "+t[i][0]+" "+t[i][1]);
    }
    */
}

function onFault(responds:Object){
    for(var i in responds){
        trace(responds[i]);
    }
}


netConnection.call("ArduinoTest.getCountofTotallColors",responder);
//data ophalen van arduino

次のエラーが表示されます。

ReferenceError: エラー #1069: プロパティserverInfoが見つからStringず、既定値がありません。test2_fla::MainTimeline/onResult() で

エラーのポイントがわからないため、コードをデバッグできません。

4

1 に答える 1

0

明らかに、応答で未分類の文字列を受け取ります。onResult() 関数で渡されたオブジェクトのタイプを次のようにデバッグします。

function onResult(responds:Object):void
{
    if (responds is Array) {
        trace('Array has been received:',responds);
        // do something with that array
    } else if (responds is String) {
        trace('String has been received:',responds);
        // do something with that string
    } else {
        trace('An object of unknown type has been received:',responds);
        for (var i:String in responds) trace('['+i+']',responds[i]);
    }
}
于 2012-09-05T08:48:20.273 に答える