2016-08-10 2 views
1

Ich zeige ein modales (Bootstrap) -Dialogfeld an, wenn ein Benutzer auf eine Zeile einer Tabelle klickt. Hier ist ein kleines Stück Code, das ich verwende:Entfernen zwischengespeicherter Informationen aus dem Ajax-Aufruf im modalen Dialog

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

}); 

Der obige Code ist grabbing einen JSON-Wert und im Dialog angezeigt wird. Ich stehe vor Cache-Problemen, glaube ich an meinen Ajax-Anruf. Der vorherige Inhalt des Dialogs wird nicht entfernt, und ich muss den Cache im Grunde aus meinem Browser löschen und auf eine bestimmte Zeile klicken, um zu sehen, was ich sehen möchte.Ich habe versucht, cache : false zu verwenden, dabei einen datumsbasierten Zeitstempel in der URL, aber ich habe immer noch alte Inhalte in meinem Dialog gesehen. Einige SO-Posts haben vorgeschlagen, das Modal zu zerstören, aber es wird sich nicht wieder öffnen, glaube ich. Gibt es einen besseren Ansatz, den ich befolgen kann, um sicherzustellen, dass ich vorherige Inhalte in meinem Dialog nicht sehen kann? Ich verwende Chrome als meinen Browser.

+0

Wie beurteilen Sie die JSON-Objekt erhalten oder abgerufen werden 'doc_contents'? – kolunar

+0

@kolunar Ich habe es so abgerufen 'var doc_contents = data_.myContentList;' – John

+0

Sind Sie sicher, dass Sie einen bestimmten Grund verwenden. '.appendTo()' anstelle von '.html()'? – kolunar

Antwort

1

Ich denke, es ist kein Problem im Cache, aber DOM Manipulationsproblem. Sie sollten den Inhalt innerhalb #employee_document_contents anstelle von appendTo ersetzen.

diesen Code in Ihrer Callback-Funktion versuchen:

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

Super, das hat funktioniert. IT war appendTo Problem. – John

0

aus dem obigen Beispiel bietet, ist es schwer zu verstehen ist, wie das Versprechen Objekt verwendet wird. Ich sehe nicht, dass Sie das Objekt data_ verwenden. wo ist die Variable doc_contents gesetzt? Innerhalb einer Schließung oder außerhalb des vielversprechenden Rückrufs?

Der schnelle Weg, dies zu lösen, besteht darin, Ihren Umfang und Ihre Aufgaben zu verstehen. Verwenden Sie Console.log/Registerkarte Netzwerk in Chrome/oder verwenden Sie Haltepunkte.

oder tun nach dem alle Ajax-Antworten sehen

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

Auch können Sie Ihre Kette jQuery ruft

$('#mydialog').modal("show").draggable(); 
Verwandte Themen