- PR -

vb.netからjavascriptを出力する時にエラーが出ます。

1
投稿者投稿内容
パクジン
ベテラン
会議室デビュー日: 2004/08/19
投稿数: 50
投稿日時: 2004-11-01 11:36
お世話になります。
いろいろ調べてみたのですが、お手上げ状態になっているので
どなたか解決の糸口でもよいのでお教えください。

環境は、
Windows 2000
.Net 2003
です。

VB側でjavascriptを使い、actionで指定のURLへ飛びたいのです。

html側
<HTML>
<body onload="test()">
<form name="MyForm" method="post" runat="server">
</form>
</body>
</HTML>

VB側
ページロードに記述
Dim scriptString As String = "<script language=JavaScript1.2>function test(){"
scriptString += "document.forms[0].action=/test1/index.aspx;"
scriptString += "document.forms[0].submit();"
scriptString += "}</script>"

'出力
Page.RegisterClientScriptBlock("clientScript", scriptString)

html側で特に問題はないと思うのですが、
実行するとページでエラーが発生し、
「オブジェクトを指定してください」というエラーが出てしまいます。
javascriptは初心者なので記述の仕方がまずいのかなと思うのですが
なにがまずいのかも分からず止まっています。

どなたかご教授をお願いします。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-11-01 11:56
引用:

シロさんの書き込み (2004-11-01 11:36) より:
なにがまずいのかも分からず止まっています。



IEの設定で[スクリプトのデバッグを使用しない]をoffにしてみましょう。

http://support.microsoft.com/default.aspx?scid=kb;ja;816173

常連さん
会議室デビュー日: 2004/10/27
投稿数: 21
投稿日時: 2004-11-01 11:59
引用:

シロさんの書き込み (2004-11-01 11:36) より:
VB側
ページロードに記述
Dim scriptString As String = "<script language=JavaScript1.2>function test(){"
scriptString += "document.forms[0].action=/test1/index.aspx;"
scriptString += "document.forms[0].submit();"
scriptString += "}</script>"

'出力
Page.RegisterClientScriptBlock("clientScript", scriptString)



actionに設定している値をシングルクウォートで括ってあげてもだめですか?
こちらはそれで動きました。

×scriptString += "document.forms[0].action=/test1/index.aspx;"
○scriptString += "document.forms[0].action='/test1/index.aspx';"
パクジン
ベテラン
会議室デビュー日: 2004/08/19
投稿数: 50
投稿日時: 2004-11-01 13:15
todoさん、怜さんありがとうございました。

todoさんのご返答より引用:----------------------------------------------------

IEの設定で[スクリプトのデバッグを使用しない]をoffにしてみましょう。

----------------------------------------------------------------------------
offにしてみました。
やはり、VB側のjavascriptに問題があるみたいですが、原因解明には至らずでした。
でも、このデバックの方法は知らなかったので、勉強になりました。
ありがとうございます。

怜さんのご返答より引用:------------------------------------------------------

actionに設定している値をシングルクウォートで括ってあげてもだめですか?
こちらはそれで動きました。

×scriptString += "document.forms[0].action=/test1/index.aspx;"
○scriptString += "document.forms[0].action='/test1/index.aspx';"

----------------------------------------------------------------------------
シングルクォ−テ−ションで括ってみました。
「オブジェクトを指定してください」というエラーは出なくなりました。
ありがとうございます。
ただ、別のエラーが起こってしまって........。
技術的なことではないと思いますので、自分で考えてみたいと思います。

todoさん、怜さんありがとうございました。
常連さん
会議室デビュー日: 2004/10/27
投稿数: 21
投稿日時: 2004-11-01 14:07
引用:

シロさんの書き込み (2004-11-01 13:15) より:
ただ、別のエラーが起こってしまって........。
技術的なことではないと思いますので、自分で考えてみたいと思います。




発言者であるシロさん自身がご自分で考えるといっている以上、これ以上の書き込みは余計なお世話かもと思ったのですが、当方でもシロさんの所で発生したと思われるエラーが発生しました。
発生した内容は「例外の詳細: System.Web.HttpException: データを検証できません。」と言う物です。
考えてみると呼び出した自分自身以外に対して行っているPostBackが原因のような気がします。
詳しくは調べていないので確証はありませんが。
今まで自分以外に対してSubmitを行った事が無かったので気がつきませんでしたが、ASP.NETって自分以外へのSubmitってありなんでしょうか?
質問に対して別の質問を書き込むのもどうかと思いましたが、ふと気になったもので書いてしまいました。
全然関係ないものでしたらすいません。
一応情報までに。
パクジン
ベテラン
会議室デビュー日: 2004/08/19
投稿数: 50
投稿日時: 2004-11-01 15:23
怜さん、ありがとうございました。
そこまで調べて頂いて感謝感激です。

引用:--------------------------------------------------------------------------

今まで自分以外に対してSubmitを行った事が無かったので気がつきませんでしたが、ASP.NETって自分以外へのSubmitってありなんでしょうか?

-------------------------------------------------------------------------------
怜さんがおっしゃるとおりsubmitが原因のようです。
そもそもこのやり方自体に無理があったみたいで....。

buttonを一つ設けて、onloadでそのボタンをクリックして、Response.Redirect()で
指定のURLに飛ばしました。

時間があれば、怜さんの質問を調べてみたいと思います。
僕も気になりますので....。

お時間を取っていただきありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)