unescape(), String wird nur bis zum ersten "&" ausgegeben
J!M!
- javascript
0 ChrisB0 ChrisB- menschelei
0 J!M!0 ChrisB
0 Daniel Thoma
Hallo.
Der Parameter "NAV" mit Wert "Me&&MySelf"wurde mit escape() übergeben. Zum Ausgeben möchte ich es wieder unescapen, da sonst %26 statt & ausgegeben wird.
Siehe "function handleResponse2()":
[HTML]function load_subnav_and_content(NAV, PIC){
ajax_preload = new Image();
ajax_preload.src = "../../images/ajax.gif";
/*Load side-picture*/
document.getElementById('side').innerHTML = '<img src="../../images/' + PIC + '">';
/*Load sidebar*/
searchReq = false;
function getXmlHttpRequestObject(){
if(window.XMLHttpRequest){
return new XMLHttpRequest();
}
else{
if(window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}
else{
alert("Your browser doesn't support the XMLHttpRequest-Object. Please check for the newest version of your browser.");
return false;
}
}
}
searchReq = getXmlHttpRequestObject();
if(searchReq && (searchReq.readyState == 4 || searchReq.readyState == 0)){
searchReq.open("GET", 'includes/load_subnav.php?NAV=' + NAV, true);
searchReq.onreadystatechange = handleResponse;
searchReq.send(null);
}
function handleResponse(){
if (searchReq.readyState == 4 && searchReq.status==200){
document.getElementById('sidebar').innerHTML = searchReq.responseText;
}
else{
document.getElementById('sidebar').innerHTML = '<img src="../../images/ajax.gif" alt="" style="margin-left: 50px;">';
}
}
/*Load content*/
ajax__bar_preload = new Image();
ajax__bar_preload.src = "../../images/ajax-bar.gif";
searchReq2 = false;
searchReq2 = getXmlHttpRequestObject();
if(searchReq2 && (searchReq2.readyState == 4 || searchReq2.readyState == 0)){
searchReq2.open("GET", 'includes/load_nav_content.php?NAV=' + NAV, true);
searchReq2.onreadystatechange = handleResponse2;
searchReq2.send(null);
}
function handleResponse2(){
if (searchReq2.readyState == 4 && searchReq2.status==200){
document.getElementById('title').innerHTML = unescape(NAV);
document.getElementById('content').innerHTML = searchReq2.responseText;
}
else{
document.getElementById('title').innerHTML = '<img src="../../images/ajax-bar.gif" alt="" style="margin-top: 40px;">';
document.getElementById('content').innerHTML = '';
}
}
}
[/HTML]
Im Firefox klappt es wunderbar, doch im IE7 wird nur "Me&" ausgegeben. Warum?
Zum nachvollziehen: [URL="http://ajage.aj.funpic.de/html"]http://ajage.aj.funpic.de/html[/URL] und dann auf "Me&&MySelf" klicken.
MfG J!M!
Hi,
Der Parameter "NAV" mit Wert "Me&&MySelf"wurde mit escape() übergeben.
Warum uebergibst du derart unguenstige Parameter, um sie als Bestandteil von URLs zu verwenden?
Ein Bild serverseitig mit "me&&myself.png" zu benennen, ist eine reichlich bloede Idee - sowas "muss" ja frueher oder spaeter Probleme geben.
Im Firefox klappt es wunderbar, doch im IE7 wird nur "Me&" ausgegeben. Warum?
Kann ich im IE 7 nicht nachvollziehen, da wird Me&&MySelf als Ueberschrift angezeigt.
Troztdem solltest du m.E. wenigstens fuer die URLs guenstigere Parameter verwenden.
Und warum du irgendetwas, was du per AJAX empfaengst, anschliessend unescapen musst, erschliesst sich mir auch nicht.
MfG ChrisB
Probleme _umgehen_ sollte nicht die erste Lösung sein, die ein Programmierer anstrebt, sondern einen Weg, wie man das Problem elegant lösen kann.
Der Grund die Sachen so zu benennen liegt darin: Die Werte werden in einer Datenbank gespeichert. Nun stell dir mal vor, ich müsste für einen einzigen Menüeintrag drei Felder ausfüllen - einen Wert, der ausgegeben werden soll, einen Wert, der an die JavaScript Funktion übergeben werden soll, und einen Wert, der den Namen des Bildes beinhaltet. Nur um Fälle mit '&' zu umgehen, die sehr sehr selten auftreten. Da ist es viel einfacher nur ein Feld zu haben, der universal eingesetzt werden kann. Zwar musste ich jetzt etwas überlegen, aber dafür habe ich später weniger Wartungsaufwand.
Warum ich unescapen muss? Bei der Parameterübergabe wurde der Wert escaped - & wurde zu %26, wenn ich es nicht wieder unescape wird eben %26 ausgegeben. Du verstehen?
Hi,
Der Grund die Sachen so zu benennen liegt darin: Die Werte werden in einer Datenbank gespeichert. Nun stell dir mal vor, ich müsste für einen einzigen Menüeintrag drei Felder ausfüllen - einen Wert, der ausgegeben werden soll, einen Wert, der an die JavaScript Funktion übergeben werden soll, und einen Wert, der den Namen des Bildes beinhaltet.
Datenbankinhalte ueber eine eindeutige nummerische ID anzusprechen, *ist* der uebliche Weg.
Da ist es viel einfacher nur ein Feld zu haben, der universal eingesetzt werden kann.
"Viel einfacher" ist in diesem Falle ein bloedsinniges Argument. (Und das gerade von jemandem, der gerade noch erzaehlen wollte, was ein Programmier anstreben sollte.)
Zwar musste ich jetzt etwas überlegen, aber dafür habe ich später weniger Wartungsaufwand.
Wenn du dir das mal nicht nur einbildest.
MfG ChrisB
Hi,
vielleicht waere es die beste Loesung, das Problem einfach zu *umgehen*, in dem du etwas weniger auf die l33t-h4x0r-(Kinder-)Kacke haust.
Navigationspunkte wie "Me&&MySelf", "FriendsZone", dazu hier der Nick J!M! - wenn du nicht wirklich unbedingt den Eindruck vermitteln willst, maximal 14 zu sein und deinen ersten Computer erst vor ein paar Wochen von Papi gekauft bekommen zu haben ... dann entschaerfe diese moechtegern-kultige Sprachverunstaltung doch mal ein wenig.
MfG ChrisB
Kann dir doch verdammt ******egal sein, was ich für einen Nick verwende. Und wenn ich '&&' in meinen Wörtern drinne habe, dann hat es mit haxor überhaupt nicht zu tun - und wenn, geht es dich auch nichts an. An "Me&&MySelf" ist gar nichts Kindisches, und "FriendsZone" soll eine Community für meine Freunde werden. Wie sollte ich sie denn deiner Ansicht nach sonst nennen?
Also: Entweder hast du einen Tipp, oder einfach beim nächsten mal die Klappe halten. Ich HASSE diese 'Netzpoliziten'. Wenn Jimmylein von Papilein vor einer Woche einen vTech-Computer geschenkt bekommen hätte, dann würde er nicht PHP und so n Kram können.
J!M!
Hi,
Also: Entweder hast du einen Tipp, oder einfach beim nächsten mal die Klappe halten.
Danke, die Reaktion war die erwartete :-)
MfG ChrisB
Hallo ChrisB,
Danke, die Reaktion war die erwartete :-)
Klar und die angemessene, immerhin hast Du Dich daneben benommen.
Grüße
Daniel
Hallo ChrisB,
vielleicht waere es die beste Loesung, das Problem einfach zu *umgehen*, in dem du etwas weniger auf die l33t-h4x0r-(Kinder-)Kacke haust.
Es gibt keinerlei Rechtfertigung an dieser Stelle beleidigend zu werden.
Es kann gründe geben, Sonderzeichen in Parametern verwenden zu wollen (müssen ja nicht nur Dateinamen sein, vielleicht ist es auch mal Freitext). Das hat also zu funktionieren. Es ist nicht "dumm" Sonderzeichen in Parametern übertragen zu wollen, sondern eine alltägliche Anforderung.
Navigationspunkte wie "Me&&MySelf", "FriendsZone", dazu hier der Nick J!M! - wenn du nicht wirklich unbedingt den Eindruck vermitteln willst, maximal 14 zu sein und deinen ersten Computer erst vor ein paar Wochen von Papi gekauft bekommen zu haben ... dann entschaerfe diese moechtegern-kultige Sprachverunstaltung doch mal ein wenig.
Mal abgesehen davon, dass es nicht verwerflich ist, 14 zu sein und solche Seiten zu machen, erweckst Du hier auch nicht gerade den Eindruck einer gefestigten Persönlichkeit. Bitte passe Dein Sozialverhalten üblichen Normen an.
Grüße
Daniel