2017-09-19 1 views
0

Ich habe einen JavaScript-Block, der die aktuelle URL lädt, nachdem eine Ajax-Anfrage gestellt wurde. Manchmal hat die neu zu ladende URL GET-Variablen und manchmal POST.jQuery Seite mit POST- oder GET-Variablen neu laden

Im Fall von POST-Variablen aufgefordert, die im Anschluss an die Benutzer Wiedervorlage der Formulardaten zu bestätigen:

window.location.reload(); 

Also ich diese eingeschaltet, die nicht aufgefordert:

window.location = window.location; 

Aber das Problem mit der zweiten Lösung ist, dass in Abwesenheit von POST-Variablen die Seite nicht geladen wird!

Ich muss einfach die aktuelle URL laden, was auch immer es sein mag - POST oder GET. Der ursprüngliche Wert von POST-Variablen ist mir egal.

Update:

Ein weiterer qustion, warum Chrome mich prompt zur erneuten Übermittlung der Formulardaten, noch Forefox und Edge-tun?

+0

Sie könnten jQuery schreiben, um zu überprüfen, ob Post-Variablen vorhanden sind, und wenn dies der Fall ist, fügen Sie dem DOM ein verstecktes Formular hinzu und posten es programmatisch. Aber vielleicht möchten Sie die Struktur noch einmal überdenken. Die zwei Bedingungen: (1) Meine Seite lädt nur mit POST-Variablen und (2) Ich muss diese Seite neu laden - scheint nicht kompatibel zu sein. Kannst du diese Struktur ändern? – arbuthnott

+0

@arbuthnott Es scheint wie eine Nuss mit einem Vorschlaghammer knacken, wenn ich neu strukturiere. Dies scheint eine klare Einschränkung von jQuer zu sein, da es nicht möglich ist, einfach die aktuelle URL ohne erneutes Laden oder Aktualisieren neu zu laden. Macht keinen Sinn –

+0

Ich denke, die allgemeine Idee von POST ist, dass Daten übermittelt werden und die Seite die Antwort ist. Sie können es auf andere Weise verwenden, aber es funktioniert am natürlichsten auf diese Weise. Daher werden Sie möglicherweise von Browsern gewarnt, wenn Sie versuchen, eine vom POST abgerufene Seite zu aktualisieren (weil Sie die übermittelten Daten erneut senden). Einige gute Richtlinien zur Verwendung hier: https://www.w3schools.com/tags/ref_httpmethods.asp – arbuthnott

Antwort

0

Sie können überprüfen, ob post/get gesetzt ist oder nicht, bevor Sie den Wert einstellen. Dann wird der Rest der Seite fortgesetzt.

Sie könnten isset();

wie folgt aus:

if(isset($_POST['yourPostVariable'])){ 
    $yourPostVar = $_POST['yourPostVariable']; 
} else { 
    $yourPostVar = ""; 
} 

Gleiche mit GET:

if(isset($_GET['yourGetVariable'])){ 
    $yourGetVar = $_GET['yourGetVariable']; 
} else { 
    $yourGetVar = ""; 
} 

Wenn Sie mit allen Variablen in der Nähe der Spitze des Codes tun, dann könnte es Ihr Problem lösen.

0

fand ich diese soltion, die zu funktionieren scheint:

if(window.location.search){ // if the url to reload has GET vars in the url 
    window.location.href = window.location.protocol +'//'+ window.location.host + window.location.pathname + window.location.search; 
} 

else{ // else we are delaing with a POST request 
    window.location.href = window.location.protocol +'//'+ window.location.host + window.location.pathname; 
} 

Im Grunde bin ich wieder den Aufbau der URL, die die Seite erneut ohne Nachladen der POST Vars nennen erscheint.

Verwandte Themen