1

'item'プロパティを表示するフォームがあります。ユーザーは、この「アイテム」にファイル/添付ファイルをアップロードするオプションがあります。現在、クラス'testing'のdivには、アイテムの既存の添付ファイルが表示されます。ユーザーは「添付」ボタンを使用して、更新するアイテムにファイルを添付します。フォームが「更新」ボタンクリックイベントで送信されるまで、ファイルが実際に添付されることはありません(これは私が望むものです)。フォーム送信は、iframeへのajax送信です。jqueryを使用して、現在添付されているアイテムを検索するためのクエリを含むcoldfusionページを「testing」divにロードしたいと思います。私の最初のアプローチは、フォームの送信後にjqueryのロード関数を使用することでした。

//In the JS file, the selected item is used in the CF query
form.submit();
$('.testing').load('itemAttachments.cfm?itemID=' + selectedItem);

これは'testing'divのcfincludeであり、ページには最初に正しい情報が読み込まれるため、coldufusionクエリが機能することはわかっています。フォームの送信時に、jqueryロードはcfページを返しますが、同じデータであり、新しい添付ファイルはリストされていません。ページを更新すると、データが正しく表示されます(つまり、新しい添付ファイルが一覧表示されます)。これにより、すべてが正しく機能していると思いますが、Oracleがクエリを処理する前にjqueryのロードが発生しています。

これは正しいです?もしそうなら、どうすればこれを修正できますか?ありがとう。

編集 フォームは非表示のiframeを持つターゲットに送信します。問題は、フォーム送信とjquery .load()の両方が同じページitemAttachmentsを使用していることです。ただし、コードで.loadがフォームの送信後にある場合でも、jquery load()は、フォームの送信前に最初に結果を取得します。

4

2 に答える 2

1

iframeでのこのトリックは、2つの並列リクエストを提供し、おそらく.loadがレースに勝ちます。すでにjqueryを使用している場合は、jqueryでも投稿してロードを実行することをお勧めします(または単にajax応答を使用することもできます)。

何らかの理由でiframeハックを使用する必要がある場合は、イベントをiframeにアタッチする必要があります。たとえば、iframeのリロード時に起動できます。

$('#iframe').load(function(evt){
  //do some checks
  $('.testing').load('itemAttachments.cfm?itemID=' + selectedItem);
});
于 2012-08-11T10:42:28.060 に答える
0

jqueryロードのスクリプトをcoldfusion処理ページに追加しました。私はそれにwindow.parent.documentのスコープを与えましたすなわち:

<SCRIPT LANGUAGE="JAVASCRIPT">
    $(document).ready(function(){
        $('.testing', window.parent.document).load('processForm.cfm?itemID=' + <cfoutput>#itemID#</cfoutput);
    });
</SCRIPT>

これはうまくいきました。

于 2012-08-15T15:47:13.510 に答える