2009-05-21 7 views
0

Je veux imprimer la valeur d'entrée dans flex vers PHP.Entrée et sortie Flex en PHP

Mon Flex code ...

<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]"/> 

Mon code PHP,

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

Mais je ne suis pas en mesure de recevoir le mot-clé de Flex. Quelqu'un peut-il trouver l'erreur ici que je ne suis pas capable d'obtenir.

Répondre

1

Je n'ai pas le temps de résoudre ce problème, mais voici quelques conseils dans le déboguer:

D'abord, je trace tout dans la balise d'ouverture pour votre HTTPRequest.

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

En cas de problème avec votre demande, vous n'avez absolument aucun moyen de le savoir - votre demande n'a pas de gestionnaire d'erreur! Du côté de PHP, la meilleure façon de déboguer une application comme celle-ci est avec un système de journalisation.

est ici une fonction d'enregistrement assez générique:

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); 
} 

Sur http://localhost/search/index.php appel

$message = ""; 
for($_REQUEST as $key => $val) 
{ 
    $message .= "$key = $val\n"; 
} 
log($message); 
+0

Majuscule réponse mate, je vais garder une note de ceux-ci dans mon futur codage car il peut sauver du temps très pratique. – Kevin

1

Avez-vous essayé d'utiliser FireBug? C'est une extension firefox qui peut vous montrer exactement ce qui se passe et se passe sur la connexion entre le client Flex et le serveur.

+0

excellent, il a oublié tout à fait ... Merci – Kevin

+0

, il ne peut pas.Firebug est génial, mais ce n'est pas très efficace lorsque vous essayez d'obtenir des informations sur ce qui se passe dans Flash. Je recommande Charles (http://www.charlesproxy.com) pour cela (c'est l'un des meilleurs achats que j'ai fait pour Flex) – cwallenpoole

+0

@Christopher: Je renifle le trafic HTTP de mon application flexible au serveur TOUT LE TEMPS. Quand je fais du travail REST, ça fonctionne comme une Rolls Royce. – Dan

0

Vérifiez si votre requête atteint votre script PHP (c'est-à-dire, consignez une chaîne au démarrage du script). Pour voir ce qui vient à l'écriture.

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

Désolé, ne peut pas aider avec flex :(

0

Je commencerais par l'écriture d'un script php qui accepte l'entrée et des e-mails vous ou les journaux dans un fichier, pour vous assurer que la moitié de la transaction fonctionne, puis, une fois que vous êtes sûr que cela fonctionne, passez à la vérification que le résultat attendu est renvoyé

0

Par le passé, lorsque j'ai utilisé le service httpservice ne pas définir le paramètre method (la valeur par défaut est 'get')

J'ai donc utilisé quelque chose comme

<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> 

Ensuite, à l'intérieur du php j'aurais

$ someVarThatsjustComeThrough = $ _REQUEST [ "somethingToSend"];

Si ce que vous répétez en utilisant php, renvoyez-le dans un format XML. Cela rendra votre travail beaucoup plus facile du côté des flexibles.

Toujours mettre l'heure, il empêche IE de mettre en cache l'appel php.