【ASP + JavaScript】

ASP+JavaScriptにて開発しております。

以下のような記述をしました。
var a = new AObject();
Seesion.Contents("a") = a;

ページを更新してセッションオブジェクトからaを取り出してメソッドを実行しようとしたのですが、解放されているようで実行できません。
---------------------------------------------------
Microsoft JScript 実行時エラー エラー '800a1393'

解放されたスクリプトからコードを実行できません。
---------------------------------------------------

プロパティは取り出せます。
これを解消するにはどうしたらいいですか。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/12/14 11:20:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:llusall No.1

回答回数505ベストアンサー獲得回数61

ポイント60pt

「ASP+JavaScript」というのが、ちょっと引っかかります。


ActiveServerPagesのデフォルトは、サーバーサイドスクリプトの記述は、「VBScript」です。

Kenju様は、これをあえて、「JScript」で記述しているということでしょうか?


var a = new AObject();

Seesion.Contents("a") = a;

上記の記述は、サーバーサイドスクリプトとして記述しておりますよね。


ですが、

Microsoft JScript 実行時エラー エラー '800a1393'

解放されたスクリプトからコードを実行できません。

のメッセージは、サーバサイドでなく、クライアントサイド(ブラウザ側)で表示しているように思えます。

クライアントサイドスクリプトで、サーバ側のセッションオブジェクトは参照できません。


サーバーサイド、クライアントサイドの処理をご理解頂けておりますでしょうか?

そのあたりを確認してみると良いかと思います。

id:Kenju

ご回答ありがとうございます。


>Kenju様は、これをあえて、「JScript」で記述しているということでしょうか?

そうです。


そしてご推察の通り、メッセージはブラウザに表示されます。

これはASPエラーが出た時、ブラウザで確認できるようにしているためです。

クライアントサイドのスクリプトは何も書いていません。

サーバサイドの実行エラーのメッセージがクライアントに送信されてきたのです。


>サーバーサイド、クライアントサイドの処理をご理解頂けておりますでしょうか?

そんな基本的なレベルで詰まっているわけではありません。

2006/12/07 13:00:21
  • id:Kenju
    舌足らずでした。
    具体的には、以下のようなコードを書きました。
    ><pre>
    function AObject()
    {
    this.a = 1;
    }

    AObject.prototype.get = function()
    {
    return 1;
    }

    var a = Session.Contents("a");
    if(!a) {
    a = new AObject();
    Session.Contents("a") = a;
    }

    Response.write(a.a);
    Response.write(a.get());
    </pre><

    リロードすると、aプロパティは出力されるものの、getメソッドは実行されずエラーになります。
  • id:lains_you
    http://www.imasy.or.jp/~hir/hir/tech/js_tips.html

     解決方法や原因はわかりませんが、Application変数にJScriptオブジェクトを格納しようと方の結論が、上記ページの「JScriptオブジェクトは格納できない」で述べられています。

     おそらくSession変数でも同じ原因で格納できないのでは。
  • id:Kenju
    >>lains_you様
    ありがとうございます。

    確かに私もこのページを見たときダメなのか、と思ったのです。
    しかし、今回の場合は格納は出来るんですよね。
    しかもプロパティなら参照できる。
    プロパティの値はオブジェクトでも参照できるみたいですが、
    var a = function name(){};
    var a = new Function("");
    このふたつだけがダメ。

    関数オブジェクトだけがダメなのは納得がいかないので聞いてみた次第です。
  • id:llusall
    >そんな基本的なレベルで詰まっているわけではありません。
    大変失礼致しました。

    やむを得ずポイントを付けなければならない場合は、ポイントをお返しします。
  • id:Kenju
    >>llusall様
    いえ、私が舌足らずでした。
    回答ありがとうございます。
  • id:llusall
    ポイントを返送させていただきました。
    ご確認お願いします。

    つかぬことですが、
    JScriptを採用した理由って何ですか?
    顧客要望でしょうか?
  • id:Kenju
    結局そんな方法ないみたいですね。
    VBScriptでもメソッドは解放されるのかな。。

    >>llusall様
    ポイント受け取りました、ありがとうございます。

    >JScriptを採用した理由って何ですか?
    JScriptのほうがオブジェクトを使いやすいからです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません