- OpenLaszlo紹介
- プログラム構造関連
- スクリプト
- Javascript基礎
- 基礎知識
- ビュー<view>
- レイアウト
- 動かす
- 入力デバイス
- 文字
- 数値
- 日付
- オブジェクト指向
- 標準コンポーネント
- データの扱い
- データ操作(基礎)
- 応用編
–
バックグラウンドシステム(ここではたまたまPHP)とのデータ送受信例です。
ブラウザでhttp://www.openlaszlo-ason.com/php/gettest.php?sei=織田&mei=信長にアクセスして、ソース表示してみてください。
その結果、下記のようなXMLが表示されればOK、OpenLaszloでデータ受信できます。
<data sei='織田' mei='信長'/>
OpenLaszloはデフォルトでGETリクエストです。
<?php $sei = $_GET["sei"]; $mei = $_GET["mei"]; print "<data sei='".$sei."' mei='".$mei."'/>"; ?>
<?xml version="1.0" encoding="UTF-8"?> <canvas proxied="false" bgcolor="0xeeeeee"> <dataset name="ds" src="http://www.openlaszlo-ason.com/php/gettest.php" request="true"/> <simplelayout spacing="10" /> <!-- データ入力エリア --> <hbox><text>姓:</text><edittext id="sei"/></hbox> <hbox><text>名:</text><edittext id="mei"/></hbox> <button text="送信" width="50" height="25"> <handler name="onclick" > var p=new LzParam(); p.addValue("sei", sei.getText(), true); p.addValue("mei", mei.getText(), true); ds.setQueryString(p); ds.doRequest(); </handler> </button> <!-- データ表示エリア --> <hbox datapath="ds:/data"> <text>こんにちは</text> <text datapath="@sei"/> <text datapath="@mei"/> <text>さん</text> </hbox> </canvas>
POSTリクエストするには、setQueryType('POST');が必要。
<?php $sei = $_POST["sei"]; $mei = $_POST["mei"]; print "<data sei='".$sei."' mei='".$mei."'/>"; ?>
<?xml version="1.0" encoding="UTF-8"?> <canvas proxied="false" bgcolor="0xeeeeee"> <dataset name="ds" src="http://www.openlaszlo-ason.com/php/posttest.php" request="true"/> <simplelayout spacing="10" /> <hbox><text>姓:</text><edittext id="sei"/></hbox> <hbox><text>名:</text><edittext id="mei"/></hbox> <button text="送信" width="50" height="25"> <handler name="onclick" > var p=new LzParam(); p.addValue("sei", sei.getText(), true); p.addValue("mei", mei.getText(), true); ds.setQueryString(p); ds.setQueryType('POST'); ds.doRequest(); </handler> </button> <hbox datapath="ds:/data"> <text>こんにちは</text> <text datapath="@sei"/> <text datapath="@mei"/> <text>さん</text> </hbox> </canvas>
日本語文字列をGET/POSTする場合、swf8とswf9以降とで挙動が異なります。上記のサンプルではswf9以降でコンパイルすると文字が化けます。swf9以降では、LZX側で入力文字列をencodeURI()でエンコードし、PHP側でurldecode()でデコードします。もちろん、このサンプルはswf8コンパイルでは動きません。
(OpenLaszlo4.6.1/swf9)
<?php $sei = urldecode($_GET["sei"]); $mei = urldecode($_GET["mei"]); print "<data sei='".$sei."' mei='".$mei."'/>"; ?>
<?xml version="1.0" encoding="UTF-8"?> <canvas proxied="false" bgcolor="0xeeeeee"> <dataset name="ds" src="http://www.openlaszlo-ason.com/php/gettest_as3.php" request="true"/> <simplelayout spacing="10" /> <!-- データ入力エリア --> <hbox><text>姓:</text><edittext id="sei"/></hbox> <hbox><text>名:</text><edittext id="mei"/></hbox> <button text="送信" width="50" height="25"> <handler name="onclick" > var p=new lz.Param(); p.addValue("sei", encodeURI(sei.getText()), true); p.addValue("mei", encodeURI(mei.getText()), true); ds.setQueryString(p); ds.doRequest(); </handler> </button> <!-- データ表示エリア --> <hbox datapath="ds:/data"> <text>こんにちは</text> <text datapath="@sei"/> <text datapath="@mei"/> <text>さん</text> </hbox> </canvas>