Flex ввод и вывод в PHP - PullRequest
       8

Flex ввод и вывод в PHP

0 голосов
/ 21 мая 2009

Я хочу напечатать входное значение в flex на PHP.

Мой код Flex ...

<mx:HTTPService id="sendReq" result="google(event)" showBusyCursor="true" method="POST" url="http://localhost/search/index.php" useProxy="false">
        <mx:request xmlns="">
            <keyword>
                {keyword.text}
            </keyword>
        </mx:request>
    </mx:HTTPService>

    <mx:TextInput text="" id="keyword" left="130.5" top="89" right="228.5" height="40" fontSize="20" fontWeight="bold" borderStyle="outset" focusThickness="0"/>

    <mx:Button click="sendReq.send();" id="search" label="search"  right="133.5" top="91" height="40" width="75" alpha="1.0" fillAlphas="[1.0, 1.0]"/>

Мой PHP-код,

$keyword = $_POST['keyword'];
echo $keyword;

Но я не могу получить ключевое слово от Flex. Может кто-нибудь найти здесь ошибку, которую я не могу получить.

Ответы [ 5 ]

1 голос
/ 22 мая 2009

У меня нет времени, чтобы решить эту проблему, но вот несколько советов по ее устранению:

Во-первых, я бы отслеживал все в открывающем теге для вашего HTTPRequest.

<mx:HTTPService id             = "sendReq" 
                result         = "trace( event )" 
                fault          = "trace( event )" 
                showBusyCursor = "true" 
                method         = "POST" 
                url            = "http://localhost/search/index.php"
                useProxy       = "false">

Если с вашим запросом что-то не так, у вас нет абсолютно никакой возможности узнать это - в вашем запросе нет обработчика ошибок!

На стороне PHP, лучший способ отладки приложения, как это, с некоторой системой ведения журналов.

Вот довольно общая функция ведения журнала:

define( 'PATH_TO_LOG_FOLDER', "../Logs" );

public function log( $message ){
    $logFileName = "log";
    if(!$fp = @fopen(PATH_TO_LOG_FOLDER. DIRECTORY_SEPARATOR . 
             $logFileName .date('Y-m-d').".log", 'a+')){
        return FALSE;
    }

    flock(  $fp, LOCK_EX  );    
    fwrite( $fp, $message );
    flock(  $fp, LOCK_UN  );
    fclose( $fp );
}

Вкл. http://localhost/search/index.php вызов

$message = "";
for( $_REQUEST as $key => $val )
{
    $message .= "$key = $val\n";
}
log( $message );
1 голос
/ 21 мая 2009

Вы пробовали использовать FireBug? Это расширение Firefox, которое может точно показать, что происходит и происходит на соединении между клиентом Flex и сервером.

0 голосов
/ 22 мая 2009

В прошлом, когда я использовал httpservice, я не устанавливал параметр метода (по умолчанию 'get')

Так что я использовал что-то вроде

<mx:HTTPService id="myCall" 
    url="{'somephp.php'}"
    result="resultHandler(event)" 
    fault="faultHandler(event)"
    showBusyCursor="false" 
    resultFormat="e4x"> 
    <mx:request>
        <somethingToSend>post data inside here</somethingToSend>
        <time>{new Date().getTime()}</time>
    </mx:request>
</mx:HTTPService>

Тогда внутри php у меня будет

$ someVarThatsjustComeThrough = $ _REQUEST ["thingToSend "];

Если все, что вы возвращаете с помощью php, отправьте его обратно в формате XML. С гибкой стороной ваша работа будет намного проще.

Всегда вводите время, это мешает IE потенциально кэшировать вызов php.

0 голосов
/ 21 мая 2009

Я бы начал с написания php-скрипта, который принимает входные данные и отправляет вам электронное письмо или записывает в файл, чтобы убедиться, что у вас работает send-половина транзакции; затем, как только вы убедитесь, что это работает, перейдите к проверке того, что ожидаемый результат возвращается.

0 голосов
/ 21 мая 2009

Проверьте, достигает ли ваш запрос ваш php-скрипт (т.е. записываете строку при запуске скрипта). Чтобы увидеть, что происходит в сценарии:

print_r(getallheaders());
print_r($HTTP_RAW_POST_DATA);
print_r($_POST); 

Извините, не могу помочь с flex: (.

...