SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Probleme mit & statt & in Url

Unbeantwortet Dieser Beitrag hat 10 Antworten

Ohne Rang
221 Beiträge
MiriMar erstellt 29 Aug. 2013 13:08
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

Ich häng gerade an einem sehr verzwickten Problem und hoffe, jemand hat da eine zündende Idee (oder irgendwas, nachdem ich googeln kann, das klappt nämlich nicht:/).

Folgendes Problem/Szenario: Ich habe auf einer Seite ein DataformWebpart und in der Ansicht auf eine Bildspalte ein onclick javascript, dass mir aus einer anderen Spalte per xsl eine Url holt und diese dann im Modal Dialog öffnet (Danke nochmal Andi, das hätt ich schonmal ohne dich nicht hinbekommen!).

Mein Problem: Er zieht sich den Link immer mit & statt nur &. Sollte ja eigentlich kein Problem sein, sollte man meinen. Tja, bei mir schon. Mehrfach getestet: Der Link mit & schmeißt mir eine Seite mit 'Dieses Webpart kann nicht angezeigt werden. ' Nur mit & klappt alles wunderbar. Meiner Meinung nach wären da ja zwei Dinge denkbar: 1. Ich kriegs irgendwie hin, dass das javascript mir keine &amps; aus den & macht, oder ich bringe meinem Browser (IE9) bei, die Zeichen gleich zu behandeln. Nur hab ich bei beiden keine Ahnung, wie ich das bewerkstelligen soll.

Oder hab ich (wieder mal...) irgendwas übersehen? Geht das vielleicht ganz anders?  

Edit: Habs noch eingrenzen können: Tatsächlich stören die amps nirgendwo in der URL AUßER direkt vor ID=... Sobald man da & davor stellt, hab ich o.b. Fehler. Irgendwie seltsam, oder nicht?

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 29 Aug. 2013 13:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich weiß jetzt nicht genau, wo das Problem entsteht. Wenn es im XSL ist, hast Du wahrscheinlich irgendwo ein
<xsl:value-of select=$url" />

Erweitere das um disable-output-escaping="yes", damit das & nicht zu &amp; codiert wird.

Falls das Problem erst im JavaScript auftritt, kannst Du auch dort die Codierung aufheben:
var url = "Page.aspx?P1=1&amp;P2=3";
url = decodeURIComponent(url);
// url ist jetzt "Page.aspx?p1=1&P2=3"

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
221 Beiträge
MiriMar Als Antwort am 29 Aug. 2013 13:30
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du warst mal wieder schneller als mein Edit:)

Das mit dem disable output hab ich schon gemacht, dann ist die Url in der Spalte auch richtig. Erst irgendwo danach, wenn sich mein onclick attribut das Feld @Spaltenwert zieht, wirds wohl wie mit Zauberhand wieder ein &amp;...

Aber danke, das mit dem javascript probier ich mal aus! 

Ohne Rang
221 Beiträge
MiriMar Als Antwort am 29 Aug. 2013 14:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Und noch ein bisschen mehr Infos habe ich herausbekommen: ich benutze als Funktion onclick: onclick="javascript:SP.UI.ModalDialog.ShowPopupDialog('Url'). Es ist aber tatsächlich so, dass ich da keine normalen & in der url verwenden darf!

Ich habe eine statische Url versucht, aber sobald ein & zeichen drin ist, wirft er einen Fehler: Semikolon erwartet!

Das hab ich übrigens bei allen meinen javascripts auf Buttons etc. auch: bei commit__redirect={} z.B. mag er keine & mehr nehmen. Ist das normal so?

 

Ist doch toll: Im Code MUSS ich &amp; verwenden, browserseitig führt aber genau das zum Fehler...hrmpf

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 29 Aug. 2013 14:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

JavaSCript ist das erstmal Wurschd (es sind nur strings). Der Fehler muß also irgendwo anders liegen. Zeige doch mal eine solche URL (Du kannst ja alles "Verräterische" wie die Domäne verfälschen) und wie Du sie genau verwendest.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
221 Beiträge
MiriMar Als Antwort am 29 Aug. 2013 15:00
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Also, die Zelle mit dem Icon, das geklickt werden soll sieht so aus:

<td class="ms-vb">
    <xsl:variable name="LinkzurBearbeitung"><xsl:value-of select="@Link_x0020_Bearbeiten" disable-output-escaping="yes"/></xsl:variable>
    <img border="0" src="{@Bearb_x002e_}" alt="{@Bearb_x002e_.desc}" onclick="javascript:SP.UI.ModalDialog.ShowPopupDialog('{$LinkzurBearbeitung}');" /></td>

Der Link, der sich hinter @Link_x0020_Bearbeiten verbirgt, wäre z.B.:

http://domäne/Organisation/Aufträge/InternerBestellauftrag/Workflows/IB%20neu%202.Teil/Preise%20einholen.aspx?List=24b0f5f6%2D86ed%2D460d%2Da6c2%2D45d914e9996b&View={AB794D43-C8F4-4FA4-98D2-B088D15C14B7}&FilterField1=Titel%5Fx0020%5FBestellung&FilterValue1=Testlauf_27.08.2013_40&Web=5fd11976%2D5c3c%2D4ea3%2Da252%2Daa4f7888c1d3&ID=116

Ich erstelle den Link als Text in ein Feld (per WF). Er soll dann eben in der Ansicht durch Drücken des Icons in einem Modal Dialog geöffnet werden. Nur sind dann da immer die &amps; drin. Und wenn man im javascript oben statt ('{$LinkzurBearbeitung}') eine statische URL reinmacht mit einem & Zeichen, kriege ich den Fehler, dass ein Semikolon erwartet wird...

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 29 Aug. 2013 15:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Weil Du mich jetzt neugierig gemacht hast, habe ich es getestet. Dazu einfach statisch in eine Seite eingebaut:

<img src="..." onclick="SP.UI.ModalDialog.ShowPopupDialog('./default.aspx?P=1&Q=2');"/>

Ergebnis: funktioniert in IE8, IE9 und Firefox tadellos und zwar völlig egal, ob man & oder &amp; verwendet. Im Sinne von sauberem XHTML wäre allerdings &amp; richtig.

Tut mir sehr leid, aber Dein Problem muß immer noch woanders liegen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
221 Beiträge
MiriMar Als Antwort am 29 Aug. 2013 16:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Es ist zum Mäusemelken, echt. Ich kann NIRGENDWO mehr in ein javascript, das eine URL braucht, eine URL mit & verwenden! Also auch ein Button mit dem von SP bereitgestellten __commit__redirect={}! Wenn ich da in die redirect Klammer eine Url mit einem & Zeichen reinmache, kriege ich eine Fehlermeldung!

Ich kriegs ja nicht mal hin, zum Testen wie du das img tag irgendwo anders auf der Seite einzufügen:/ Da löscht er einem ja immer das javascript raus...

Ohne Rang
221 Beiträge
MiriMar Als Antwort am 29 Aug. 2013 17:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ist es denn normal, dass das &amp; in der Ur nicht interpretiert werden kann?

In den Logs steht auch nichts, was mir weiterhilft:

Error while executing web part: System.ArgumentException: Der Wert liegt außerhalb des erwarteten Bereichs.     bei Microsoft.SharePoint.SPFieldMap.GetColumnNumber(String strFieldName, Boolean bThrow)     bei Microsoft.SharePoint.SPListItemCollection.GetColumnNumber(String groupName, Boolean bThrowException)     bei Microsoft.SharePoint.SPListItemCollection.GetRawValue(String fieldname, Int32 iIndex, Boolean bThrow)     bei Microsoft.SharePoint.SPListItem.GetValue(SPField fld, Int32 columnNumber, Boolean bRaw, Boolean bThrowException)     bei Microsoft.SharePoint.SPListItem.GetValue(String strName, Boolean bThrowException)     bei Microsoft.SharePoint.SPListItem.get_Item(String fieldName)     bei Microsoft.SharePoint.WebControls.SPDataSourceView.ConvertToIEnumerableWrappers(SPListItem list... 12052e82-66fd-4bbd-aa65-e6bca06db06b

Ohne Rang
221 Beiträge
MiriMar Als Antwort am 30 Aug. 2013 08:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Eine Nacht drüber schlafen hilft oft Wunder: Ich habe jetzt die komplette URL in die Javascript Klammer geschrieben (mit &amp;) und einfach überall die @Werte eingetragen. Und siehe da, es funktioniert!!! Keine Ahnung, warum er zwar die komplette ausgeschriebene URL mit amps frisst/umwandelt, aber wenn man ihm die über eine Variable gibt nicht, ist mir aber auch echt sowas von egal!

Danke fürs Mitdenken Andi!

 

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 2 Sept. 2013 20:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Edit: Nicht richtig gelesen... ;-)

 

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de