2016-08-10 15 views
1

ユーザーがテーブルの行をクリックすると、モーダル(ブートストラップ)ダイアログが表示されます。ここに私が使用している小さなコードがあります:モーダルダイアログでキャッシュされた情報をajax呼び出しから削除する

.done (function (data_, textStatus_, jqXHR_) { 
     $('<pre/>').html(doc_contents[1].text_content).appendTo('#employee_document_contents'); 
     $('#mydialog').modal("show"); 
     $('#mydialog').draggable(); 

}); 

上記のコードは、JSON値を取得してダイアログに表示しています。私はキャッシュに関連する問題に直面しています。私は自分のajax呼び出しを信じています。ダイアログの前の内容は削除されていません。私は基本的にブラウザからキャッシュをクリアし、特定の行を再度クリックして、見たいものを表示しなければなりません。cache : falseを使ってみました。 URLはまだ私のダイアログで古いコンテンツを見た。いくつかのSOの投稿はモーダルを破壊することを提案しましたが、それは再び開くことはできません。私のダイアログに以前の内容が表示されないようにするためのより良いアプローチはありますか?私はブラウザとしてクロムを使用しています。

+0

を呼び出すことができますか? – kolunar

+0

@kolunar 'var doc_contents = data_.myContentList; – John

+0

のように取得したのは、' .html() 'の代わりに.'.appendTo()'を使って特定の理由があると確信していますか? – kolunar

答えて

1

キャッシュされた問題ではなく、DOM操作の問題だと思います。 appendToの代わりに#employee_document_contentsの内容を置き換える必要があります。

コールバック関数内でこのコードを試してみてください。

var content = $('<pre />').html(doc_contents[1].text_content); 
$('#employee_document_contents').html(content); // Here you replace the content 
$('#mydialog').modal("show"); 
$('#mydialog').draggable(); 
+0

素晴らしい、それは働いた。 ITが問題に追加されました。 – John

0

の例からは、上記の提供、それは約束のオブジェクトが使用されているかを理解するのは難しいです。私はdata_オブジェクトを使ってあなたを見ることはありません。 doc_contents変数はどこにありますか?クロージャー内または有望なコールバックの外で?

これを迅速に解決するには、スコープと割り当てを理解する必要があります。 Console.log/Chromeのネットワークタブ /またはブレークポイントを使用してください。

またはすべてのAJAXの応答

$(document).ajaxSuccess(function(event, xhr, settings) { 
    console.log(xhr.responseText); 
}); 

を参照するには、以下また、あなたが連鎖あなたのjQueryのは、どのようにJSONオブジェクト `doc_contents`を取得したり、取得ん

$('#mydialog').modal("show").draggable(); 
関連する問題