- - PR -
Ajax:スクリプト読込中のエラー
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-09-07 15:40
お世話になります。
Ajaxを使用しWebアプリケーションを開発しています。 VS2008、VBです。 UpdatePanel上に複数のコントロール(DropDownList、RadioButtonList、TextBox等) を配置し、それぞれのイベントをTriggerに登録しているのですが DropDownListで項目を選択した直後にRadioButtonListをチェックする等 立て続けに処理を行った場合、以下のエラーが発生してしまいます。 ------------------------------------------------------------------ Microsoft JScript 実行時エラー: Sys.InvalidOperationException: ScriptLoader がスクリプトを既に読み込み中の場合、ScriptLoader.loadScripts を呼び出すことはできません。 ------------------------------------------------------------------ やってみたこと 1.UpdateProgressで、操作されたくないコントロールを覆うサイズ&z-indexのdivを表示させる 2.PageRequestManagerのbeginRequest、initializeRequesで操作されたくないコントロールの乗ったパネルをdisableにし、EndRequest時に元に戻す。 自分なりに上記の対策を施してみましたが、両方とも、UpdateProgressのdivが非表示になった直後、パネルがenabledになった直後に 操作を行うと、同様のエラーが発生してしまいます。 1.2の起動するタイミングより、エラーの捕まえられるタイミングの方が早いのでしょうか… どなたかこのエラーの対策・回避方法等おわかりになるようでしたらご教示下さい。 よろしくお願いします。 |
|
投稿日時: 2008-09-08 07:25
下記サイトが参考になりませんか。
http://geekswithblogs.net/rashid/archive/2007/08/08/Asp.net-Ajax-UpdatePanel-Simultaneous-Update---A-Remedy.aspx それから、Ajaxをテストするときは Firefox + FireBugを利用したらどうでしょうか。 _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 |
|
投稿日時: 2008-09-08 09:56
回答ありがとうございます。煮詰まっていたので助かります。
ご紹介頂いたサイト、これから調べてまた結果をご報告します。 >Firefox + FireBug 業務アプリでブラウザ固定なものでほぼIEでのみ開発していました。 FireBug便利そうですね。試してみます。 |
|
投稿日時: 2008-09-10 17:00
ご報告遅くなり申し訳ありません。
非同期ポストバック中にされたリクエストをいったんキューに入れて 後で_doPostBackする、というのは目から鱗でした。 シンプルな画面構成の場合、まさに希望通りの動きです。 ただ、マスタページを使用していたり、ユーザコントロールを使用している場合 立て続けに行った処理の2つめ以降が動作しません。(リンク先のコメントにもありますね) js側で_doPostBackは行われているのですが、VB側のイベントにたどりつきません…。 原因や、気をつけてみるべき点など、おわかりになる方がいましたらご助言願います。 |
|
投稿日時: 2008-09-11 02:10
__COMMAND_TARGET を保存しておくとか。
|
|
投稿日時: 2008-09-11 10:37
すみません。
__COMMAND_TARGETというのはどこに保持されているものでしょうか。 __EVENTTARGETではないんですよね… |
|
投稿日時: 2008-09-24 15:56
現状報告です。
マスタページ使用時に動作させる方法が思いつきません。 お手上げです。 応急処置的にget_isInAsyncPostBack()時にargs.set_cancel(true);で 後に発生したポストバックをキャンセルしていますが、 ボタンの二重クリックではないので、処理をキャンセルしっぱなしというわけにはいきません。 マスタページ未使用の場合はうまくいくので 該当の部分を別ページで作成し、iframeで表示し 親ページから制御できないか試してみようと考えています。 正直なところフレームは使いたくなかったのですが…。 引き続き、マスタページ使用時の処理についてご助言お待ちしています…。 |
|
投稿日時: 2008-09-24 19:33
お手上げと書き込んだすぐ後であれなのですが、
マスタページ使用時に動作させる方法がわかりましたのでご報告します。 http://forums.asp.net/t/1152540.aspx endRequest時の _prm._doPostBack(_element.id, _eventArg); ↑これを、これ↓に変更することで動作しました。 if(_element.name != null) _prm._doPostBack(_element.name, _eventArg); else _prm._doPostBack(_element.id.replace(/_/g,"$"), _eventArg); 確かにnameとidでは値が違うのですが、 なぜ最初のポストバックでうまくいって、 再処理時に失敗するのかわかりません…。 もう少し検証を続けてみますが、とりあえずは解決とさせて頂きます。 |
1