仅从PHP页面中的一个print函数获取数据并将其传递给flash


problem taking data from only one print function in a php page and passing to flash

我正试图从php页面中获取一个变量,并将其发送到flash,然后在链接中使用。

我有问题,只是选择一个变量从打印函数,代码将有助于解释:

PHP页面

<?
print"fbook=facebook";
print"tweet=twitter-test";
print"utube=youtube-test";
?>
<<p> Flash代码/strong>
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE,onLoaded);
loader.load(new URLRequest("../SC/FLA_tools-btn.php"));
var variables:URLVariables = new URLVariables();
fbook.addEventListener(MouseEvent.MOUSE_DOWN, mouseClickfbook);
tweet.addEventListener(MouseEvent.MOUSE_DOWN, mouseClicktweet);
youtube.addEventListener(MouseEvent.MOUSE_DOWN, mouseClickyoutube);
function onLoaded(evt:Event):void
{
var data:URLVariables = new URLVariables(evt.target.data);
variables.fbook = data.fbook;
variables.twitter = data.tweet;
variables.utube = data.utube;
}
function mouseClicktweet(event:MouseEvent):void
{
navigateToURL(new URLRequest('http://www.twitter.com/'+variables.twitter),"_Self");
}
function mouseClickfbook(event:MouseEvent):void
{
navigateToURL(new URLRequest('http://www.facebook.com/'+variables.fbook),"_Self");
}
function mouseClickyoutube(event:MouseEvent):void
{
navigateToURL(new URLRequest('http://www.youtube.com/'+variables.utube),"_Self");
}

它很好地收集了所有的数据,但它没有正确地打印出来,它在一个链接中打印出了php中的所有变量。例如:

如果我点击facebook图标,我将被带到http://www.facebook.com/facebooktweet=twitter-testutube=youtube-test,这也发生在其他图标(Youtube和Twitter)。

任何想法?

谢谢!

从PHP通过网络发送的原始数据大致如下:

fbook=facebook'n
tweet=twitter-test'n
utube=youtube-test'n

如果你想在URLVariables类中使用它,你需要对属性进行正确的URL编码。它们应该是这样的:

fbook=facebook&tweet=twitter-test&utube=youtube-test

修改你的PHP脚本如下:

<?
print"fbook=facebook&tweet=twitter-test&utube=youtube-test";
?>

那么你应该在Flash的那一边设置好

如何用不同的方式来处理?当您从flash应用程序请求php文件中的数据时,您可以指定您想要的特定数据。下面是一个这样的例子:

Main.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx"
               creationComplete="init(event)">
    <fx:Script>
        <![CDATA[
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        import flash.net.URLRequestMethod;
        import flash.net.URLVariables;
        import mx.events.FlexEvent;
        import spark.components.Button;
        public function init(e:FlexEvent):void
        {
            facebookButton.addEventListener(MouseEvent.CLICK, onClick);
            twitterButton.addEventListener(MouseEvent.CLICK, onClick);
            youtubeButton.addEventListener(MouseEvent.CLICK, onClick);
        }// end function
        private function onClick(e:MouseEvent):void
        {
            var button:Button = e.target as Button;
            var requestString:String = "";
            switch(button)
            {
                case facebookButton: requestString = "facebook"; break;
                case twitterButton:  requestString = "twitter";  break;
                case youtubeButton:  requestString = "youtube";  break;
            }// end switch
            var urlVariables:URLVariables = new URLVariables();
            urlVariables.request = requestString;
            var urlRequest:URLRequest = new URLRequest("http://projects.flashdevelop/stackoverflow/GetDataFromPHP/bin/php/getData.php");
            urlRequest.data = urlVariables;
            urlRequest.method = URLRequestMethod.POST;
            var urlLoader:URLLoader = new URLLoader();
            urlLoader.addEventListener(Event.COMPLETE, onUrlLoaderComplete);
            urlLoader.load(urlRequest);
        }// end function
        private function onUrlLoaderComplete(e:Event):void
        {
            var urlLoader:URLLoader = e.target as URLLoader;
            var urlVariables:URLVariables = new URLVariables(urlLoader.data);
            trace(urlVariables.response);
        }// end function
        ]]>
    </fx:Script>
    <s:HGroup>
        <s:Button id="facebookButton" width="100" height="100">Facebook</s:Button>
        <s:Button id="twitterButton" width="100" height="100">Twitter</s:Button>
        <s:Button id="youtubeButton"  width="100" height="100">Youtube</s:Button>
    </s:HGroup>
</s:Application>

getData.php:

<?php
    $response = "";
    if (!empty($_POST))
    {
        switch($_POST["request"])
        {
            case "facebook" : $response = "response=facebook-data"; break;
            case "twitter"  : $response = "response=twitter-data"; break;
            case "youtube"  : $response = "response=youtube-data"; break;
            default         : $response = "response=error"; break;
        }// end switch
    }
    else
    {
        $response = "response=error";
    }// end else
    print $response;
?>