2017-08-28 1 views
0

Ich habe einen jQuery-Code in Ausführen, wenn Seite lädt Abschnitt meiner Oracle APEX-Seite. Meine Seite besteht aus dynamischem PL/SQL-Inhalt, konkret aus zwei Auswahllisten, die wie ein Filter wirken. Wenn also der ausgewählte Wert einer dieser Auswahllisten geändert wird, wird die Umleitung mit den richtigen Seitenelementwerten aufgerufen. JQuery-Code unten behandelt nur die zweite Auswahlliste, die Seitenumleitung aufruft.URL kodiert utf8 Zeichen zu% in Oracle APEX js Umleitung

var appId = $v('pFlowId'); 
var pageId = $v('pFlowStepId'); 

var this_page_link_prefix = 'f?p='+appId+':'+pageId+':::NO:RP:'; 

$(document).on('change', '#category_select', function() { 
    if ($(this).val() != '') { 
     var href = this_page_link_prefix+'P'+pageId+'_FILTER_CATEGORY,P'+pageId+'_FILTER_RACE_TYPE:' 
     +$(this).val()+','+$('#race_type_select').val()+':'; 
     console.log(href); 
     $(location).attr('href', href); 
    } 
}); 

Hier stieß ich auf ein Problem, das ich selbst nicht lösen kann. Wenn mein Filter UTF-8-Zeichen wie "Ž" enthält, wird die URL in% codiert. Zum Beispiel, wenn die Auswahlliste enthält "Ženy", sieht meine umgeleitet URL wie folgt aus:

fp = 123: 5: 9348018667019 :: NO: RP: P5_FILTER_CATEGORY, P5_FILTER_RACE_TYPE: % 25C5% 25BDeny, 1

Wenn ich versuche href Variable Konsole anmelden, enthält es die richtige URL:

fp = 123: 5: 9348018667019 :: NO: RP: P5_FILTER_CATEGORY, P5_FILTER_RACE_TYPE: Ženy, 1

ich denke, Ich habe alle Anwendungseinstellungen durchsucht und kann immer noch keine Lösung finden r dies. Ich werde jede Hilfe schätzen.

Antwort

0

Ich habe keine Ahnung, wie Sie steuern, ob UTF-8-Zeichen in der URL-Leiste des Browsers angezeigt werden. In Chrome zum Beispiel kann ich sie eingeben und sie korrekt anzeigen, aber wenn sie die Anfrage an den Server sendet, verschlüsselt sie sie percent. Versuchen Sie es mit den F12-Entwicklertools und machen Sie eine einfache Anfrage, z. https://www.google.com/search?q=Ženy

So könnte es Ihr Browser tun. Was Sie jedoch unbedingt beheben können, ist sicherzustellen, dass das Seitenelement P5_FILTER_CATEGORY den korrekten UTF-8-Wert und nicht die prozentuale Codierung aufweist. Fügen Sie einfach einen „Vor Header“ Prozess oder etwas zu tun:

:P5_FILTER_CATEGORY := UTL_URL.UNESCAPE (:P5_FILTER_CATEGORY, 'UTF8'); 

Eine andere Sache, die helfen könnten, das ist ziemlich einfach zu tun ist, ist Ihre Seitenvorlagen zu bearbeiten und stellen Sie sicher, dass sie die charset sind Einstellung, Sie möchten in der Seitenüberschrift, z

<html><head> 
<meta charset="utf-8"/> 
.... 

Schließlich könnten Sie die Browser-Entwicklungs-Tools verwenden möchten, und prüfen Sie, welche Content-Type charset APEX im HTTP-Header sendet. Ich kann mich nicht daran erinnern, wie ich das ändern kann, aber wenn es nicht utf-8 ist, solltest du es vielleicht ändern.

+0

Browser hat es nicht getan. Ich habe UTF-8-Zeichen richtig erkannt, nachdem ich sie in die URL-Leiste eingegeben habe. Es war wirklich seltsam, da sich die gleiche Anwendung auf 2 Servern unterschiedlich verhielt. Auf dem Produktionsserver wurde diese% Kodierung nicht ausgeführt. Wie Sie im zweiten Absatz erwähnt haben, habe ich mein PL/SQL-Paket eingecheckt, wenn der Inhalt des Seitenelements% codiert ist. Dann habe ich die UTL_URL.UNESCAPE Funktion benutzt und jetzt ist alles in Ordnung. –