Я последовал примеру того, как сделать систему входа в систему на flex.Этот пример был сделан не для мобильных проектов Flex, а для настольных компьютеров, работающих в браузере.Как я понимаю, я могу использовать один и тот же код, но с разными компонентами.Я продолжаю получать ошибки.Мой код ниже.
PHP-код для подключения и запроса базы данных и отправки результата обратно с помощью xml
<?php
echo "<?xml version="\"1.0\" ?>\n";
$con = mysql_connect("HOST","USER","PASS");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("DatabaseName here");
//Variables that I wil retrieve from the flex application
$user = $_POST['user'];
$pass = $_POST['pass'];
//mySQL query
$result = mysql_query("SELECT * FROM `brukere` WHERE 1");
//not logged in so it's false
$loged = false;
//Comparing the text i retrieved from the flex app and the rows in my database.
while($row = mysql_fetch_assoc($result))
{
if(strtolower($user) == strtolower($row['brukernavn']) &&
strtolower($pass) == strtolower($row['passord']))
{
$loged = true:
}
}
//so if loged is true, pass true in xml to my flex application.
if($loged == true)
echo "<status>true</status>";
else
echo "<status>false</status>";
?>
Мой HTTPService в гибком коде
<fx:Declarations>
<mx:HTTPService id="loginService" result="onResult(event)" method="POST" url="URL TO THE PHP SCRIPT">
<mx:request xmlns="">
<user>{username.text}</user>
<pass>{pass.text}</pass>
</mx:request>
</mx:HTTPService>
</fx:Declarations>
А затем мои сценарии действий
<fx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
private function login():void
{
loginService.send();
}
private function onResult(e:ResultEvent):void
{
if(e.result.status == true) {
Alert.show("Succesful");
}
else {
Alert.show("Wrong");
}
}
]]>
</fx:Script>
Наконец, графический интерфейс:
<s:VGroup includeIn="notLoggedIn" x="286" y="164" width="45%" height="200">
<s:HGroup includeIn="notLoggedIn" width="100%" height="38" verticalAlign="middle">
<s:Label width="30%" height="31" text="Brukernavn: " verticalAlign="middle"/>
<s:TextInput id="username" width="70%"/>
</s:HGroup>
<s:Spacer width="459" height="10"/>
<s:HGroup includeIn="notLoggedIn" width="100%" height="40" verticalAlign="middle">
<s:Label width="30%" height="34" text="Passord:" verticalAlign="middle"/>
<s:TextInput id="pass" width="70%"/>
</s:HGroup>
<s:Spacer width="458" height="10"/>
<s:HGroup width="462" height="65">
<s:Spacer width="70%" height="64"/>
<s:Button width="30%" label="Logg inn" click="login()"/>
</s:HGroup>
</s:VGroup>
Это все, что я получаю, когда отлаживаю приложение:
[SWF] AKTIVe.swf - 4,192,242 bytes after decompression
ReferenceError: Error #1069: Property status not found on String and there is no default value.
at Views::Login/onResult()[C:\Users\Tobias\Documents\bacheloroppgave\workspace\src\Views\Login.mxml:54]
at Views::Login/__loginService_result()[C:\Users\Tobias\Documents\bacheloroppgave\workspace\src\Views\Login.mxml:13]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at HTTPOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[E:\dev\4.y\frameworks\projects\rpc\src\mx\rpc\http\HTTPService.as:993]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::resultHandler()[E:\dev\4.y\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:318]
at mx.rpc::Responder/result()[E:\dev\4.y\frameworks\projects\rpc\src\mx\rpc\Responder.as:56]
at mx.rpc::AsyncRequest/acknowledge()[E:\dev\4.y\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:84]
at DirectHTTPMessageResponder/completeHandler()[E:\dev\4.y\frameworks\projects\rpc\src\mx\messaging\channels\DirectHTTPChannel.as:451]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()
Первая мысль, что я не могуиспользовать <mx:HTTPService>
и другие mx-сервисы в моем мобильном flex-приложении.Кто-нибудь знает, что я должен искать?
Извините за длинный пост, но по крайней мере это достаточно неофициально :)
Заранее спасибо