- ベストアンサー
sendAndLoadでcgiからの戻り値が文字化けする
皆様、どうか助けてください!納期が迫っております・・・。 FLASHMX2004からボタンクリックでcgiにキーワードを送り、生成された検索結果を戻り値として受信しているのですが、数字以外は文字化けします。 5%3A1%3ACF1のようなURLエンコードされたままの状態になってしまうのです。 文字コードの問題ではなく、間違いなく正しい文字列が生成されていることは確認済です。 それが証拠に、loadVariablesだとうまくいくのです。 (当然、cgiをloadVariables用に変えることが前提) どうしてもsendAndLoadで実現する必要があります。 教えてください! System.useCodepage =true; dataObj = new LoadVars(); myLV = new LoadVars(); myLV.S01=keyword; myLV.sendAndLoad("http://xxx.xxx.xxx/cgi-bin/perl.cgi",dataObj,"POST"); dataObj.onLoad = function( success ) { _root.anser.text=dataObj.toString();//戻り値を表示 }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
LoadVars クラスを使ってデータをやりとりした場合、読み込んだ変数は、受信に使った LoadVars オブジェクトのものになっています。 例えばCGIが生成した変数 data_out を、LoadVars オブジェクト dataObj で読み込んだとしますと、読み込んだ内容は dataObj.data_out で参照できます。 LoadVars.toString(); は、オブジェクトに読み込まれたデータ全てをURLエンコーディングのまま取得するメソッドです。 このメソッドの戻り値はCGIから受信したばかりのデータに近い形式になっていますので、そもそもデータの受信自体が正常にできているのかどうかを検証する時などに使われます。 読み込んだ変数(仮に data_out とします)を文字列としてステージにあるテキストフィールド” anser ”に表示するなら、toString ではなくて _root.anser.text = dataObj.data_out; ではないでしょうか? 文字コードに本当に問題がない(CGIが生成する文字列も Shift-JIS でエンコードされている)とすれば、このような些細な間違いが原因だと思います。
その他の回答 (1)
unescapeでURLデコードしますが。 str = _root.myLV.text; myLV.text = unescape(str); こんな文をどこかに入れれば良いのではないでしょうか。
お礼
ご回答ありがとうございます。 unescapeというものもあるのですね。 参考にさせていただきます。
お礼
ご回答ありがとうございます。 やってみたところ、うまくいきました! そういうことだったのですね!! ほんとうにありがとうございました! 命拾いです!