• 締切済み

【ActionScript】ListコンポーネントとaddItemの階層関係

お世話になります。 現在、ListコンポーネントとaddItemを使ってサーバーと連携し、Listを動的に追加する仕組みを構築しています。 基本的なところは出来ているのですが、functionの中でsendAndLoadをすると、値は受け取れているのですがListにアイテムが追加されません。 var send_lv = new LoadVars(); var recv_lv = new LoadVars(); mc.btn.onRelease = function() { send_lv.value1 = "値" send_lv.sendAndLoad("xxx.cgi", recv_lv, "GET"); } recv_lv.onLoad = function(success){ if (success) { _root.sList.addItem(value2); } } mc:汎用movieclipインスタンス名 btn:mc下のボタンオブジェクトのインスタンス名 sList:コンポーネントのインスタンス名 value1:cgiに送る値 value2:cgiから返ってくる値 このfunctionの外でsendAndLoadを実行すると難なく追加されるのですが、、、何か間違っていますでしょうか。 分かる方、お願い致します。

みんなの回答

  • perse
  • ベストアンサー率74% (113/152)
回答No.2

perlも大文字と小文字を区別するようですので、 ASとperlでvalue1,value2の記述をそろえないとなりません。 perl側をそろえるなら print "Content-type:text/plain\n\n"; if($in{'value1'} ne ""){ #Value1をvalue1に。 $Value2=$in{'value1'}; #同じくvalue1に。 print "&value2=$Value2&"; #先頭にあるValue2をvalue2に。 } です。変数の$Value2はperl内でしか使われていないのでそのままでOKです。 >このfunctionの外でsendAndLoadを実行すると難なく追加されるのですが ボタン内ではなくフレームに直接書いたという意味だと思うのですが、 私の場合フレームに記述したところもボタンを押したところも値は返ってきませんでした。 (上記の通り小文字に直したら動きました。) 上記の大文字→小文字変更でもダメな場合は ボタンに名前が付いているか trace(mc.btn); ボタン内のif(success){}内は実行されているか trace(success) などtrace()を至る所に記述して原因を突き止める方法もあります。 またperlで if($in{'value1'} ne ""){ $Value2=$in{'value1'}; print "&value2=$Value2&" }else{ print "&value2=false"; #←ここ } などと書いて置くと値が正常に返ってきたかどうかも確認できます。

  • perse
  • ベストアンサー率74% (113/152)
回答No.1

cgi側で print "value2=abc"; のように出力しているのであれば _root.sList.addItem(recv_lv.value2); ではないでしょうか。

riku1128
質問者

お礼

その通りです。。コード漏れでした。失礼しました。 //AS var send_lv = new LoadVars(); var recv_lv = new LoadVars(); //動く。 send_lv.value1 = "値1" send_lv.sendAndLoad("xxx.cgi", recv_lv, "GET"); //動かない。 mc.btn.onRelease = function() { send_lv.value1 = "値2" send_lv.sendAndLoad("xxx.cgi", recv_lv, "GET"); } recv_lv.onLoad = function(success){ if (success) { _root.sList.addItem(recv_lv.value2); } } //CGI #!/usr/local/bin/perl require 'cgi-lib.pl'; &ReadParse; print "Content-type:text/plain\n\n"; if($in{'Value1'} ne ""){ $Value2=$in{'Value1'}; print "&Value2=$Value2&"; } 上記のようにしています。 Function内のsendAndLoadは動かないのでしょうか;;