2012-04-25 84 views
1

請原諒我,如果這已經被回答/是非常基本的/問題的措辭不正確,我對此很陌生並且掙扎。如何通過URL將參數從Flex發送到PHP HttpService

基本上我有後端生成XML的PHP​​,Flash生成器然後繼承數據。當我被困在如何理解Flash Builder可以通過HttpService的如

發送參數到PHP這是它目前解釋:

http://..../file.php?action=getitems 

我想在Flash Builder派是

&class=fruit (<- the class would be dependant on what is selected from the drop down in the application) 

整體創建這個字符串

http://..../file.php?action=getitems&class=fruit 

謝謝喲如果這是無稽之談,請道歉。我使用的是Flash Builder 4.

回答

1

這實際上是在Flex中相當簡單...

var service : HTTPService = new HTTPService(); 
service.url = "http://localhost/getData.php"; 
service.method = "POST"; 


var parameters:Object = new Object(); 
parameters["action"] = "getitems"; 
parameters["class"] = "fruit"; 

service.send(parameters); 

...完成!

1

總的來說,我會使用push方法而不是傳遞一個變量,從而減少從中間入侵的機會。

我對HTTP調用AS3代碼:

public function someRequest() : void 
    { 
     var service : HTTPService = new HTTPService(); 
     service.url = "http://localhost/getData.php"; 
     service.useProxy = false; 
     service.method = "POST"; 
     service.contentType = "application/xml"; // Pass XML data. 
     service.request = "<ID>somevalue</ID>";  // The XML data. 
     service.resultFormat = "xml";    // Recieve XML data. 
     service.addEventListener(ResultEvent.RESULT, createFields); 
     service.addEventListener(FaultEvent.FAULT, handleFault); 
     service.send(); 
    } 

    private function createFields(event : ResultEvent) : void 
    { 
     var result : String = event.result.toString(); 
     returnData = XML(result); 
    } 

    private function handleFault(event : FaultEvent) : void 
    { 
     var faultstring : String = event.fault.faultString; 
     Alert.show(faultstring); 
    } 

當你向中間看,有進入變量的XML空間。我使用這種方法將數據從PHP傳遞到AS3。

的PHP是:

<?php 

define("DATABASE_SERVER", "localhost"); 
define("DATABASE_USERNAME", "root"); 
define("DATABASE_PASSWORD", "**"); 
define("DATABASE_NAME", "dbName"); 

//connect to the database. 
$mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD); 

mysql_select_db(DATABASE_NAME); 

$Query = "SELECT * from data WHERE employeeID = '" . ($_POST['ID']) . "'"; 
$Result = mysql_query($Query); 

$Return = "<data>"; 

while ($User = mysql_fetch_object($Result)) 
{ 
    $Return .= "<user><userid>" . $User->userid . "</userid><username>" . $User->username . "</username><emailaddress>" . $User->emailaddress . "</emailaddress></user>"; 
} 
$Return .= "</data>"; 
mysql_free_result($Result); 
print ($Return) 
?> 

希望幫助你對你的方式。

+0

只是一個評論,無論我是盲目的,我無法找到您的PHP示例中傳遞數據的位置/方式。 – 2012-04-25 18:33:01

+0

在AS3代碼中,您會注意到有一個 – powelljf3 2012-04-25 19:59:04

+0

我在用於將XML數據傳入和傳出AS3的三行代碼中添加了註釋。它們是.contentType,.request和.resultFormat行。我發現使用XML工作很容易,因爲mySQL可以乾淨地使用它,但是您可以更改這些行中的描述符以使用您選擇的數據格式。 – powelljf3 2012-04-25 20:06:36

1

我一般是通過[POST]而不是[GET]

在ActionScript函數處理這個問題:

private function sendRequest():void { 
var obj:Object = new Object(); 
obj.action="getitems"; 
obj.class="fruit"; 

myService.send(obj); 

你的HTTPService

<s:HTTPService id='myService' url='urlToYourPHP' method='POST' result='yourResultHandler' fault='yourFaultHandler' resultFormat='XML'/> 

正如powelljf3說,POST更安全然後GET,但它仍然可以得到。

+0

添加以下內容到我的編輯中,但是我應該在這裏添加它; 「應該在我發佈之前閱讀所有答案。Sam DeHaan儘管我很確定你需要obj.paramater對他obj ['paramater')進行懲罰,但他的方法對我所知的所有人都適用。從未嘗試過。「 – Dom 2012-04-26 11:01:38

+0

你應該在大多數情況下工作。我擔心使用'class',因爲它是一個關鍵字,所以我認爲我寧願安全,按照我所展示的方式去做。 – 2012-04-26 12:06:15

+0

你說得對。我只是試圖obj.class和Flex抱怨。 – Dom 2012-04-26 12:20:52

相關問題