jQuery attr() escaping kaufmännische und-Zeichen
So, ich versuche ein Bild src-Attribut dynamisch per javascript etwa so:
var url = 'query.php?m=traffic&q=getgraph&id='+pipeId+'&start=-3h';
console.log(url);
$('#3h').attr('src',url);
Das problem ist, es zeigt sich wie so query.php?m=traffic&q=getgraph&id=1&start=-3h
in der Konsole, die die eigentlichen SRK für die #3h-Bild-element ist query.php?m=traffic&q=getgraph&id=1&start=-3h
Und dann, natürlich, es funktioniert nicht. Wie kann ich vermeiden, jQuery attr () - Methoden, die' Zeichen der Flucht? Irgendwelche anderen Vorschläge, wie sollte ich mein Ziel erreichen, sind sehr willkommen.
&
ist HTML für&
(während&
ist HTML für den Beginn einer juristischen Person). Warum also "natürlich, es funktioniert nicht"? Dies ist das erwartete Verhalten und es sollte funktionieren. Welche URL siehst du in der access-Protokolle für den server? Welche URL sehen Sie verlangt, dass die Bild in Firebug oder ein anderes Netzwerk-monitoring-tool? Die Zeichen-escaping erfolgt intern durch den DOM, nicht die von der jQuery-wrapper. (Tatsächlich, es ist geschehen auf dem Weg nach draußen, wenn serialise zurück zu HTML)- Sie können & in der Variablen.
- Dorward: ich meinte mit "es funktioniert nicht" durch die Prüfung durch einfügen von blahblahblah.com/... (ist es nicht wie das funktioniert) und blahblahblah.com/... (das funktioniert)
- So testen Sie kopiert eine HTML-Attribut und versucht, es als eine URL? Das wird nicht funktionieren. Müssen Sie zum konvertieren von HTML in text um eine URL aus (und der Umwandlung in text wird wiederum
&
zurück&
).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn es nicht funktioniert, ist es nicht durch das kaufmännische und-Zeichen, die mit Escapezeichen versehen. Als Attribut in einem HTML-element aller XML-Entitäten, die müssen escaped werden:
Als ein Beispiel, wenn ich
index.php?foo=bar&buzz=baz
, und ich wollte eina
element Ziel, die Seite, die ich brauchen würde, um die Anker so:Href bekommen würde entschlüsselt:
index.php?foo=bar&buzz=baz
Werde ich sehen, wenn ich kann nicht finden, die relevanten Unterlagen für Sie.
http://example.com/?foo=bar©=baz
— dann beobachten Sie, wie©
wird analysiert, wie©
. Browser wird versuchen, die Fehler wiederherstellen von ungültigen Entitäten.Das einzige Problem, das ich sehe in deinem code ist, dass Ihre ID-Attribut beginnt mit einer Zahl, die die ungültig ist in HTML4.
Sollten Sie ändern Sie die ID auf das element, um mit einem Buchstaben beginnen, wie
h3
Es ist für mich arbeiten:
http://jsfiddle.net/y249K/
Können Sie
escape
die Daten vor dem schreiben auf ein Attribut.Ausprobieren diese Geige
dann
Könnten Sie vermeiden Sie die Verwendung von jQuery für diese und verwenden Sie das native JavaScript - /DOM-Funktionen statt:
document.getElementById('3h').src = url;