ASP.NET MVCとjQueryを使用していて、Ajax経由でPartialViewをロードしています。このPartialViewには、別個のJavaSriptFileが属しています。成功すると、戻りHTMLはDOMに挿入されます。 JavaScriptでは、いくつかのことが行われ、一緒に少し時間がかかることがあります。ロードされたコンテンツは、ダイアログに表示されます。MVC&jQuery&Ajax:JavaScriptがロードされるのを待ちます。
簡体コード:
1 $.ajax({
2 url: /user/edit,
3 dataType: 'html',
4 data: { id: 1 },
5 success: function (htmlCode) {
6 $('#dialogEditUser').html(htmlCode);
7 $('#dialogEditUser').dialog('open');
8 });
9 };
このコードはPartialViewのJavaScriptが実行されてどのくらいの速に応じて、動作し、時にはません。時にはダイアログが開かないことがあります。だから私は行番号7を;に変更しました;
7 setTimeout(function() { $j('#dialogEditUser').dialog('open') }, 250);
すべて正常に動作します。しかし、この "ハック"はあまり適切ではありません。 PartialViewのJavaScriptが読み込まれたコンテンツで実行されたかどうかを確認するにはどうすればよいですか? JavaScriptはすでに実行されていたので、私はAjaxCallのリターンを得るどこ?
これは私が探していたものです。実際、私はすでにそれを試みました。しかし、部分ビューのjs-Fileは、デフォルトでtrueにasyncを持つjQuery.getscript()によってロードされました。だから私はjQuery.ajax()への呼び出しを変更し、オプションasyncをfalseに設定しましたが、元のajax呼び出しを変更する必要はありません。だから、結局、オプションasync = falseを指定したajax-callをオプションasync = trueでラップしたajax-callがあります。 質問:このような問題をどうやって解決しますか? – iappwebdev