วิธีการส่งข้อมูลระหว่าง PHP และ Flex by

31
Jan
1

ในการส่งข้อมูลระหว่าง PHP และ Flex จะแบ่งได้เป็น 2 วิธีใหญ่ๆนะครับ คือ การใช้ Flashvars และ ใช้คอมโพเนนท์ RequestHelper

ข้อแตกต่างระหว่างการใช้ Flashvars และ คอมโพเนนท์ RequestHelper

1. Flashvars จะสามารถส่งค่าจาก PHP ไปยัง Flex ได้แต่ไม่สามารถส่งจาก Flex ไปยัง PHP ได้ ซึ่งถ้าเป็น RequestHelper จะสามารถส่งได้ทั้งสองทาง

2. Flashvars โดยหลักแล้วจะเป็นการกำหนดค่าเริ่มต้น เพราะจะทำงานที่หน้าแรกของ PHP ที่เราเรียกซึ่งจะทำการส่งค่าไปยัง Flex แต่ RequestHelper สามารถเรียกใช้ฟังก์ชั่นเมื่อแอปพลิเคชั่นกำลังทำงานอยู่

การส่งข้อมูลโดยใช้ Flashvars


เราจะทำการกำหนดค่าต่างๆที่ต้องการส่งเข้าไปใน Flex เมื่อทำการเริ่มรันแอปพลิเคชั่น โดยกำหนดไว้ในหน้าแรกที่มีการเรียกใช้ Flash เช่น

<?php

$swf_name = “TestFlashvars.swf”;

$title_str = ‘Test Flashvars’;

$detail_str = ‘This is a flashvars test.’;

$flash_vars = ‘title=’.$title_str.’&detail=’.$detail_str; //กำหนดค่าของ Flashvars

?>

<div class=”flash”>

<object classid=”clsid:xxxxxxxxxxxxxxxxxxxxxx”

id=”TestFlashvars”  codebase=”http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab”>

<param name=”FlashVars” value=”<?=$flash_vars?>”>

<embed src=”<?=$src?>?a=<?=rand(0, 100000)?>” Flashvars=”<?=$flash_vars?>”

type=”application/x-shockwave-flash”

name=”flash”

id=”flash”

pluginspage=”http://www.adobe.com/go/getflashplayer”>

</embed>

</object>

</div>

จากนั้นเราจะทำการรับค่าใน Flex โดยมีการเรียกผ่าน Application.application.parameters.[ชื่อตัวแปร] ซึ่งจะทำให้ได้ค่าที่ส่งมา เช่น

public var mainTitle:String =  Application.application.parameters.title;

public var mainDetail:String =  Application.application.parameters.detail;

trace (mainTitle+”\n”+mainDetail)

ซึ่งเมื่อรันแล้วก็จะได้ค่าในคอนโซลดังนี้

Test Flashvars

This is a flashvars test.

จากตัวอย่างจะเห็นว่าประโยชน์ของ Flashvars คือการกำหนดค่าต่างๆที่ได้มาจาก PHP ก่อนจากนั้นค่อยนำไปใช้ใน Flex เมื่อเริ่มแอปพลิเคชั่น ซึ่งข้อดีคึอเมื่อแอปพลิเคชั่นต้องการค่าต่างๆจากตัวเว็ปหรือดาต้าเบสในทันทีที่เริ่มโปรแกรมก็สามารถนำมาจาก Flashvars

การส่งข้อมูลโดยใช้คอมโพเนนท์ RequestHelper


ในขั้นแรกเราต้องทำการลงคอมโพเนนท์ RequestHelper ก่อน

comp-location

รายละเอียดโค๊ดภายในคอมโพเนนท์ ดังนี้

package com.lvup

{

import mx.rpc.http.HTTPService;
import mx.rpc.events.ResultEvent;

public class RequestHelper
{
public static function sendRequest(url:String, func:Function = null, paramPost:Object = null, useCache:Boolean = false):void {
var HReq:HTTPService = new HTTPService();
if (paramPost == null) {
paramPost = {};
HReq.method=”GET”;
} else {
HReq.method=”POST”;
}

HReq.url = url;
if (!useCache)
HReq.url += “/?rand=” + Math.random()%100000;

HReq.resultFormat=”text”;
HReq.addEventListener(ResultEvent.RESULT,func);
HReq.send(paramPost);
}
}
}

ภายในโค้ด Flex หรือ ActionScript ของเราที่จะทำการรับส่งค่าต้องมีการอิมพอร์ตดังนี้

import com.lvup.RequestHelper;

ต่อไปเป็นการส่งค่าแบบง่ายๆ ทั้งสองทาง

1. การใช้ฟังก์ชั่นเพื่อส่งค่าจาก Flex ออกไปยัง PHP

จะทำการส่งค่าออกจาก Flex โดยการใส่ฟังก์ชั่นดังนี้ใน Flex

public function save_flex():void {

var obj:Object = { //ทำการกำหนดค่าตัวแปรที่จะส่งไปยัง PHP

‘title’ : ‘Flex to PHP test’,

‘detail’ : ‘parsing value from Flex to PHP’

}

RequestHelper.sendRequest(site_url+’main/save_php’,saveCompleted,obj); //ใช้คอมโพเนนท์ RequestHelper ส่งค่าออกไปยัง PHP โดยมีพารามิเตอร์สามตัวคือ PHP ที่จะรับค่า, อีเวนท์ที่จะทำเมื่อทำการส่งค่าเสร็จแล้ว, ออพเจ็คของค่าที่จะทำการส่งไปยัง PHP

}

public function saveCompleted(e:ResultEvent):void{ //เมื่อค่าทำการส่งไปถึง PHP แล้ว

trace (“done.”);

}

ทำการรับค่าจาก Flex โดยมีฟังก์ชั่นใน PHP ดังนี้

function save_php(){

echo $_POST['title']; //ค่าที่มาจาก Flex จะได้ค่ามาเหมือนกับการใช้ Form Post ใน html

echo $_POST['detail'];

}

จะทำให้หน้า PHP แสดงผลลัพธ์ดังนี้

Flex to PHP test

parsing value from Flex to PHP

และเมื่อทำการส่งค่าเสร็จในคอนโซลของ Flex ก็จะขึ้น

done.

2. การใช้ฟังก์ชั่นเพื่อส่งค่าจาก PHP เข้าไปยัง Flex

จะทำการส่งค่าออกจาก PHP โดยการใส่ฟังก์ชั่นดังนี้ใน PHP

function load_php(){

$a_data = array(  //ทำการกำหนดค่าตัวแปรที่จะส่งไปยัง Flex

‘title’ => ‘PHP to Flex test’,

‘detail’ => ‘parsing value from PHP to Flex’

);

echo json_encode($a_data); //ทำการเอ็นโค้ดค่าเพื่อส่งผ่าน JavaScript เข้าไปใน Flex

}

ทำการรับค่าจาก Flex โดยมีฟังก์ชั่นใน PHP ดังนี้

public function load_flex():void {

RequestHelper.sendRequest(site_url+’main/load_php’,loadResultCompleted); //ใช้คอมโพเนนท์ RequestHelper ส่งการเรียกค่าจาก PHP โดยมีพารามิเตอร์สามตัวคือ PHP ที่จะส่งการเรียกค่า, อีเวนท์ที่จะทำเมื่อทำการส่งการเรียกค่าเสร็จ

}

public function loadResultCompleted(e:ResultEvent):void { //เมื่อค่าเข้ามาถึงแอปพลิเคชั่นแล้ว

try {

var aData:* = JSON.decode(e.result as String); //ทำการดีโค้ดค่าที่รับมาผ่าน JavaScript

} catch (e:Error) {

trace(e.message); //ถ้ามีข้อผิดพลาดก็จะมีบอกข้อผิดพลาดขึ้นที่คอนโซลของ Flex

return;

}

trace(aData.title); //แสดงผลค่าที่ได้มาจาก PHP

trace(aData.detail);

}

จะทำให้คอนโซลใน Flex แสดงผลลัพธ์ดังนี้

PHP to Flex test

parsing value from PHP to Flex

จากตัวอย่างจะเห็นว่าประโยชน์ของ RequestHelper คือการส่งค่าทั้งไปและกลับ Flex-PHP

Enjoy this article?

Consider subscribing to our RSS feed!

1 ความเห็น

  1. doritass
    11:16 on May 12th, 2011

    ขอบคุณครับสำหรับบทความดีๆ

ใส่ความเห็น

RSS feed for comments on this post

 เราชนะรอบ 4 | ยืมเงิน 3000 ด่วน | แอพกู้เงิน | แอพเงินด่วน | สินเชื่อออนไลน์อนุมัติทันที | Site Map | กู้เงินก้อน | กระเป๋าตัง | thisshop และ ยืมเงินฉุกเฉิน 5000 ด่วน