it-swarm.com.de

Um die Webseite erneut anzuzeigen, muss Internet Explorer erneut gesendet werden

Auf meiner ASP.NET-WebForms-Seite habe ich ein modales Fenster, das sich öffnet. Der Javascript-Code zum Anzeigen dieses modalen Fensters lautet wie folgt: 

function OpenMailAddressWin(subscriberContactRelationGid, routeId, btn) {
    window.showModalDialog("SubscriberSecondaryAddress.aspx" + BuildQueryStringValuesForSubscriber(subscriberContactRelationGid, routeId, returntxtReceiptDate().value), this, strWindowFeatures + ";scroll:no;dialogWidth:442px;dialogHeight:350px");
    location.reload(true);
}

Nachdem das modale Fenster geschlossen wurde, muss die übergeordnete Seite aktualisiert werden (daher auch die location.reload (true); Anweisung am Ende), damit die im modalen Fenster vorgenommenen Änderungen wirksam werden.

Nun ist die Sache, dass manchmal (nicht jedes Mal, aufregend), wenn ich dieses modale Fenster schließe, ein Warn-Popup mit folgendem Hinweis angezeigt wird:

Msgstr "Um die Webseite erneut anzuzeigen, muss Internet Explorer die kürzlich gesendeten Informationen erneut senden.

Wenn Sie einen Kauf tätigen, sollten Sie auf Abbrechen klicken, um eine doppelte Transaktion zu vermeiden. Klicken Sie andernfalls auf Wiederholen, um die Webseite erneut anzuzeigen. "

Irgendwelche Ideen, warum das passiert?

9
Sperick

Dies ist das Problem der doppelten Übermittlung in Browsern. 

Wenn eine Seite mit der Anforderung POST geladen wird und Sie versuchen, die Seite mit location.reload(true); erneut zu laden, muss der Browser eine weitere Anforderung von POST an den Server senden. Dies kann zu Problemen mit POST soll den Status auf dem Server ändern. Daher benötigt der Browser eine Bestätigung vom Benutzer. Um dieses Problem zu lösen, verwenden wir normalerweise POST-REDIRECT-GET pattern.

In Ihrem Fall sollten Sie einfach location.href = location.href verwenden, um das Problem zu lösen, da die Seite mit GET neu geladen wird.

30
Khanh TO

Dies tritt auf, wenn Sie versuchen, view(Model) von IhrerPOST-Anforderung zurückzugeben. Tatsächlich können Sie keine Ansicht vonPOSTrequest zurückgeben, da es sich bei der Rückgabe einer Ansicht um eineGET-Operation handeln soll und dies unterGETrequest erfolgen muss.
Nachdem Sie Ihre Daten erfolgreich gepostet und in der Datenbank gespeichert haben, müssen Sie in Ihrem Controller ReturnToAction verwenden und Ihre endgültige Ansicht von dieser Aktionsmethode zurückgeben.

Wenn Sie Ihre Seite aktualisieren möchten, müssen Sie location.href = location.href anstelle von window.reload() verwenden, da location.href die Daten überGETrequest erhält.

3
Sagar Arora

Die Warnmeldung wird angezeigt, wenn eine Seite in IE mit Aktualisiert wird. Das funktioniert ... Wenn Sie die übergeordnete Seite aktualisieren möchten.

Dies könnte eine gültige Lösung sein:

window.opener.location.href = window.opener.location.href;
1
Sanjay Singh

Sie können eine setTimeout-Funktion wie folgt erstellen.
Dies gibt dir keine 

setTimeout(function () {
    window.parent.location.reload();
}, 100);
1
pixellab

Ich hatte das gleiche Problem, als ich das modale Fenster aufrief.
Ich habe location.reload entfernt und nur den true-Wert von der Funktion zurückgegeben.
Das hat mein Problem gelöst.

0
bhooshan Sane