トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     LoadVars.load(CGIFile)でcountdataが読み込めない
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kanakana
Åê¹ÆNo.2820
投稿日時: 2004-1-11 18:32
半人前
居住地: 宝塚
投稿: 51
使用環境:
(SP2)
pro7.2
:Flash8 pro
LoadVars.load(CGIFile)でcountdataが読み込めない
kanaです。
このフォーラムになって初めて登校します。
登校じゃなく(^_^;投稿(勉強しに来てるので同じかな)

CGIを使ってアクセスカウンターを作っています。
CGIそのものは動いているのを確認したのですが
そのデータをフラッシュで受けることができません。

_rootにダイナミックテキスト
変数dispcountを配置し
フレームに

System.useCodepage = true;
CGIFile = "sizecount.cgi";
myLoadVars = new LoadVars();
myLoadVars.onLoad = function(success) {
dispcount = myLoadVars.countdata;
if (success) {
trace("ok");
trace(countdata);
} else {
trace("失敗!");
}
};
myLoadVars.load(CGIFile);

と書きました。

結果
ok
undefined


となりました。
mL-LOGでも探してみましたが分かりませんでした。

ターゲットパスかなと思ってあちこちに_rootをつけてみたのですが結果は同じ…。

ヒントでも教えて頂けると嬉しいです。
よろしくお願いいたします。

MX&XPです。


kazuya honda
Åê¹ÆNo.2821
投稿日時: 2004-1-11 21:16
新米
居住地: 神奈川
投稿: 4
使用環境:
Pro XPPro[SP1]
Re: LoadVars.load(CGIFile)でcountdataが読み込めない
引用:

myLoadVars.onLoad = function(success) {
dispcount = myLoadVars.countdata;


dispcount = this.countdata;
恐らくCGIにアクセス出来ている様なら
上記の変更で変数が見えると思いますよ。


----------------
Kazuya Honda k_h7926@d1.dion.ne.jp

野中文雄
Åê¹ÆNo.2827
投稿日時: 2004-1-12 5:37
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: LoadVars.load(CGIFile)でcountdataが読み込めない
_rootに配置したTextFieldの変数dispcountには、データの表示がされているのでしょうか? 表示されていなければ、変数名やターゲットパスの誤り、変数名とインスタンス名との混同などが考えられます。

trace()アクションの出力のみの問題でしたら、LoadVars.onLoadイベントハンドラメソッドに定義したfunction(コールバック関数)内の参照を理解する必要があります。

コールバック関数内のデフォルト(ターゲットパス省略時の)参照は、スクリプトを記述したタイムラインです。コールバック関数を定義したLoadVarsインスタンスを参照する場合には、thisまたはインスタンスのパスをターゲットに指定する必要があります。
引用:
kanakanaさんは書きました:
_rootにダイナミックテキスト
変数dispcountを配置し
フレームに
System.useCodepage = true;
CGIFile = "sizecount.cgi";
myLoadVars = new LoadVars();
myLoadVars.onLoad = function(success) {
	dispcount = myLoadVars.countdata;
	// dispcount = this.countdata;
	// でもよい
	if (success) {
		trace("ok");
		// デフォルト参照はスクリプトを記述したタイムライン
		// countdataはmyLoadVarsに読込まれた変数では?
		// だとすると
		// trace(this.countdata);
		// または
		// trace(myLoadVars.countdata);
		trace(countdata);
	} else {
		trace("失敗!");
	}
};
myLoadVars.load(CGIFile);

と書きました。

結果
ok
undefined

となりました。

ただ、TextFieldに変数名をつけたのでしたら、配置したタイムライン(_root)をターゲットとしてMovieClip.loadVariables()メソッドを使う方が処理は簡単です。外部テキストファイル内の変数名とTextFieldの変数名を揃えれば、読込み待ちの必要がないからです。

MXスタイルのスクリプティングを実践したい場合は、TextFieldにはインスタンス名をつけます。そうすると、TextFieldオブジェクトのプロパティ・メソッドを使用したコントロールが可能になります。その場合には、LoadVarsオブジェクトを使って外部テキストの読込みを行い、TextField.textプロパティにテキストを設定します。たとえば、TextFieldインスタンスにmy_txtというインスタンス名をつけたとすれば、つぎのとおりです。
myLoadVars = new LoadVars();
myLoadVars.onLoad = function(success) {
	my_txt.text = this.countdata;

なお、TextFieldにインスタンス名と変数名を併用するのは、混乱の元になるので避ける(他方は削除する)ことをお勧めします。


----------------
 

kanakana
Åê¹ÆNo.2860
投稿日時: 2004-1-13 23:42
半人前
居住地: 宝塚
投稿: 51
使用環境:
(SP2)
pro7.2
:Flash8 pro
Re: LoadVars.load(CGIFile)でcountdataが読み込めない
kanaです。
kazuyaさん
Fumioさん

ありがとうございます

Fumioさんは書きました:
_rootに配置したTextFieldの変数dispcountには、データの表示がされているのでしょうか? 表示されていなければ、変数名やターゲットパスの誤り、変数名とインスタンス名との混同などが考えられます。

データの表示はされていません。
変数名を削除しインスタンス名my_txtでやってみました。
後CGIの場所をURLで書きました。

System.useCodepage = true;
CGIFile = "http://…infoseek.jp/cgi-bin/counter/sizecount.cgi";
myLoadVars = new LoadVars();
myLoadVars.onLoad = function(success) {
my_txt.text = this.countdata;
};
myLoadVars.load(CGIFile);

cgiのURLを直接打ち込んだら表示はちゃんとできます。

???がどんどん生まれてくる(^_^;

野中文雄
Åê¹ÆNo.2861
投稿日時: 2004-1-14 0:09
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: LoadVars.load(CGIFile)でcountdataが読み込めない
データの表示がされていないのでしたら、高い確率でターゲットパスが間違っています。問題のスクリプトの先頭につぎのステートメントを記述しても、TextFieldインスタンスmy_txtにテキストは表示されないのではないでしょうか? まず、この点を解決する必要があります。
my_txt.text = "test";

引用:
kanakanaさんは書きました:
データの表示はされていません。
変数名を削除しインスタンス名my_txtでやってみました。

つぎに、スクリプトの処理経過をtrace()アクションで確認しましょう。これにより、どこで問題が発生しているかの手がかりが得られます。
// このスクリプトはどのタイムラインに記述していますか?
// フレームアクション
System.useCodepage = true;
CGIFile = "http://…infoseek.jp/cgi-bin/counter/sizecount.cgi";
myLoadVars = new LoadVars();
myLoadVars.onLoad = function(success) {
	trace(success);  // 読込みが成功しているかどうか
	trace(this.countdata);  // 変数値が取得できているかどうか
	// TextFieldインスタンスmy_txtはどこに配置していますか?
	my_txt.text = this.countdata;
};
myLoadVars.load(CGIFile);


----------------
 

kanakana
Åê¹ÆNo.2862
投稿日時: 2004-1-14 0:30
半人前
居住地: 宝塚
投稿: 51
使用環境:
(SP2)
pro7.2
:Flash8 pro
Re: LoadVars.load(CGIFile)でcountdataが読み込めない
kanaです

Fumioさんは書きました:
データの表示がされていないのでしたら、高い確率でターゲットパスが間違っています。問題のスクリプトの先頭につぎのステートメントを記述しても、TextFieldインスタンスmy_txtにテキストは表示されないのではないでしょうか? まず、この点を解決する必要があります。

my_txt.text = "test";

これを記述すると「tset」と表示しました。

と言うことは…
ターゲットパスは間違ってない?と言うことですよね。



// このスクリプトはどのタイムラインに記述していますか?
// フレームアクション

//kana_rootのフレームに記述しています。

System.useCodepage = true;
CGIFile = "http://…infoseek.jp/cgi-bin/counter/sizecount.cgi";
myLoadVars = new LoadVars();
myLoadVars.onLoad = function(success) {
trace(success); // 読込みが成功しているかどうか
trace(this.countdata); // 変数値が取得できているかどうか
// TextFieldインスタンスmy_txtはどこに配置していますか?

//kana_rootに配置しています。

my_txt.text = this.countdata;
};
myLoadVars.load(CGIFile);


結果は
true
undefined
となりました。
うーーんいったい?(^_^;

野中文雄
Åê¹ÆNo.2863
投稿日時: 2004-1-14 1:28
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: LoadVars.load(CGIFile)でcountdataが読み込めない
CGIとの通信は行われ、とくにエラーも発生していないようですね。問題は、取得したい変数countdataが、存在しないと認識されていることです。LoadVrasオブジェクトのデータを、すべてfor..inアクションで出力してみることにしましょう。

#kana_rootというのがファイルkanaの_rootなのか、あるいはkana_root
#というMovieClipインスタンスなのかわかりませんが、ターゲットパスは
#合っているようなので、気にしないことにしましょう。
// フレームアクション
//kana_rootのフレームに記述しています。
System.useCodepage = true;
CGIFile = "http://…infoseek.jp/cgi-bin/counter/sizecount.cgi";
myLoadVars = new LoadVars();
myLoadVars.onLoad = function(success) {
	trace(success);  // 読込みが成功しているかどうか
	// trace(this.countdata);  // 変数値が取得できているかどうか
	// LoadVarsインスタンスmyLoadVarsの値をすべて出力
	for (var i in this) {
		trace([i, this[it]]);
	}
	// TextFieldインスタンスmy_txtはどこに配置していますか?
	//kana_rootに配置しています。
	my_txt.text = this.countdata;
};
myLoadVars.load(CGIFile);

引用:
結果は
true
undefined
となりました。

今度は、少なくともつぎのように出力されるはずです。出力のなかにcountdataという変数名がなければ、CGIからその名前の変数は返されていません。

true
countdata,<取得したいデータ>
// ほかにもあるかも
onLoad,[type Function]


----------------
 

hide_tk
Åê¹ÆNo.2865
投稿日時: 2004-1-14 2:37
新米
居住地:
投稿: 10
使用環境:
MX
XP
Re: LoadVars.load(CGIFile)でcountdataが読み込めない
以前に似たような事があったので。

一度successをハズして
以下のようなシンプルな必要最低限のコードで
試してみてください。

CGIFile = "sizecount.cgi";
myLoadVars = new LoadVars();

myLoadVars.onLoad = function() {
    var dispcount = myLoadVars.countdata;
    trace(dispcount);
}

myLoadVars.load(CGIFile);

原因は解りませんが、どうもloadされていなくても
successをみてonLoad関数が動き出すことがあったので。

どのみちCGIが手元にないので断定はできませんが・・・
kanakana
Åê¹ÆNo.2880
投稿日時: 2004-1-14 23:02
半人前
居住地: 宝塚
投稿: 51
使用環境:
(SP2)
pro7.2
:Flash8 pro
Re: LoadVars.load(CGIFile)でcountdataが読み込めない
kanaです。
Fumioさんありがとうございます。

引用:

Fumioさんは書きました:
CGIとの通信は行われ、とくにエラーも発生していないようですね。問題は、取得したい変数countdataが、存在しないと認識されていることです。LoadVrasオブジェクトのデータを、すべてfor..inアクションで出力してみることにしましょう。


今度は、少なくともつぎのように出力されるはずです。出力のなかにcountdataという変数名がなければ、CGIからその名前の変数は返されていません。

true
countdata,<取得したいデータ>
// ほかにもあるかも
onLoad,[type Function]



やってみました。次のような結果となりました。
true
SID,006" TARGET="_top"><IMG SRC="http://www.infoseek.co.jp/images/isj00/ad/ae19229/20040115_axiv_iswebtext.gif" WIDTH="212" HEIGHT="22" BORDER="0"></A></TD>
</TR>
</TABLE>
<!-- inserted by isweb server/* -->
countdata=12364

<!-- isweb auto-insert 9.0f-11-64 */ -->
<DIV ALIGN="CENTER" STYLE="display:block"> <!-- START_AD_Banner -->
<a href="http://www.infoseek.co.jp/redirect?sv=FH
BID,004
amp;svx,280900" TARGET="_top"><IMG SRC="http://www.infoseek.co.jp/images/isj00/community/isweb/logo_is.gif" WIDTH="60" HEIGHT="22" BORDER="0"></A></TD>
<TD WIDTH="159">
<INPUT NAME="qt" TYPE="text" SIZE="27" VALUE="" STYLE="FONT-SIZE:11px!IMPORTANT">
<INPUT TYPE="hidden" NAME="lk" VALUE="noframes">
<INPUT TYPE="hidden" NAME="svx" VALUE="280500"></TD>
<TD WIDTH="37"><INPUT CLASS="isweb" TYPE="image" SRC="http://www.infoseek.co.jp/images/isj00/community/isweb/b_submit3.gif" WIDTH="37" HEIGHT="22" HSPACE="4" BORDER="0" NAME="SUBMIT" ALT="Infoseek Search"></TD>

<TD WIDTH="212"></FORM><A HREF="http://www.infoseek.co.jp/redirect?ak=axiv-4001-1001-ZP202
D2,1.160.654.1017.356490" target="_top"><img border="0" width="468" height="60" src="http://www.infoseek.co.jp/images/ads/rakt1210.gif" alt=""></a><br><!-- END_AD_Banner -->
</DIV>
<!-- inserted by isweb server /* -->

rd,http://rd.rakuten.co.jp/cow/?R2=http://ticket.rakuten.co.jp/4010911620-i.html
ak,rakt-2019-1210-H1092
tid,
lk,
<!-- isweb auto-insert */ -->
<TABLE WIDTH,"468" BORDER="0" CELLSPACING="0" CELLPADDING="0" ALIGN="CENTER">
<TR><TD CLASS="isweb"> <!-- START_AD_Banner -->
<a href="http://www.infoseek.co.jp/redirect?sv=FH
onLoad,[type Function]
undefined


データはちゃんと帰ってきているようですが…
(^_^;


野中文雄
Åê¹ÆNo.2881
投稿日時: 2004-1-14 23:30
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: LoadVars.load(CGIFile)でcountdataが読み込めない
「ちゃんと」は返ってきていないです。

データはHTMLで返されているようですね。Flashが読込む外部テキストファイルの内容は、「変数=値」の形式でないといけません。
引用:
kanakanaさんは書きました:
やってみました。次のような結果となりました。
true
SID,006" TARGET="_top"><IMG SRC="http://www.infoseek.co.jp/images/isj00/ad/ae19229/20040115_axiv_iswebtext.gif" WIDTH="212" HEIGHT="22" BORDER="0"></A></TD>
</TR>
</TABLE>
<!-- inserted by isweb server/* -->
countdata=12364
...
データはちゃんと帰ってきているようですが…

CGIからFlashが読込める形式でデータを返してもらうか、返されたテキストから必要な部分を取出すスクリプトを作成するしかないでしょう。


----------------
 

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops