2012-03-30 19 views
-1


Im mit Daten-Attribute für Daten von HTML in JavaScript
Die Datenattribute kommen aus mysql Daten sendet, so dass es einen Raum darin haben könnte, so
i erhalten Validierungsfehler, da es keinen Raum sagt erlaubt innerhalb Attribute
Codierung und Decodierung mit PHP und JavaScript und Datenattribute Validierungs

so ist die Lösung, die ich dachte, wenn der Wert in pHP zu kodieren ist, so dass es keine Leerzeichen
hat und es dann in Javascript entschlüsseln, sobald es weitergegeben wurde zu Javascript. Gibt es dafür eine vorgefertigte Funktion? Ein ausfallsicherer Weg wird genial sein :)

Gibt es auch eine Möglichkeit, Werte in Datenattributen zu speichern, mit Leerzeichen darin und zu validieren?

Antwort

0

Gibt es auch eine Möglichkeit, Werte in Datenattributen zu speichern, in denen Leerzeichen enthalten sind und deren Gültigkeit überprüft wird?

Stellen Sie sicher, dass Sie Ihre Attributwerte angeben.

Dies ist ein gültiges Dokument, das am W3C-Validator übergeben wird.

<!DOCTYPE HTML> 
<html lang="en"> 
    <head> 
    <meta charset="utf-8"> 
    <title>Data Attributes</title> 
    </head> 
    <body> 
    <h1 data-space="This value has a space in it">Data Attributes</h1> 
    </body> 
</html> 
0

Wenn Sie sie in PHP html kodieren etwas wie htmlentities verwenden, können Sie sie dann in Javascript dekodieren unescape

<?php 
$value = htmlentities('hey you'); //hey%20you 

und anschließend in JavaScript

var value = unescape('hey%20you'); //hey you 
+0

Die Ausgabe von 'htmlentities ('hey you');' '' hey you' nicht 'hey% 20you' und [' unescape' ist veraltet] (https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Funktionen # escape_and_unescape_functions), da es Nicht-ASCII nicht korrekt behandelt. – Quentin

2

Räume in html shouldn Attribute Es ist kein Problem (denken Sie nur an das style Attribut: style="background-color: #F63;" hat ein Leerzeichen drin, wird aber trotzdem funktionieren. Wenn das Daten werden mit Ajax gesendet, aber Chancen, es wird URL-codiert (@Brad: urlencode ist was du meintest, vermute ich).

Da Sie sagen, dass die Daten aus einer SQL-Tabelle kommen, sind die Chancen, dass die Daten selbst übergeben wird entweder in einem Objekt oder einem Array in PHP gespeichert. Wenn ja, warum nicht nur json_encode die Daten und in Javascript: JSON.parse(document.getElementById('theId').value);. Dies gibt Ihnen ein Objekt in JS, das alle Daten enthält, die Sie haben. Wenn nur 1 String erforderlich ist, können Sie die Verwendung json_encode indem Sie Ihre Daten in einem Wrapper Array Bank, und dass kodieren ...

Sie stellen Sie sicher, SINGLE Anführungszeichen, wenn Sie Zeichenfolge dies zu HTML verwenden:

<?php 
    $dbArray = array('this', 'array', 'contains','your','data', 'with spaces'); 
    $html= '<input type="hidden" id="hiddenArray" value=\''.json_encode($dbArray).'\'/>'; 

Wenn Sie einfache Anführungszeichen das Element verwenden werden malformed, da json codierten Arrays in ihnen doppelte Anführungszeichen haben:

<input type="hidden" id="hiddenArray" value='["this","array","contains","your","data","with spaces"]' /> 

Könnte nicht sexy aussehen, aber wie Sie sehen können, würde doppelte Anführungszeichen die Verput gesetzt haben ts value to [ ... Dadurch werden keine Leerzeichen entfernt, aber sie verursachen auch keine Probleme.

Verwandte Themen