2010-04-19 3 views
7

J'ai une variable JavaScript que je fais écho à l'aide de PHP qui est montré comme celui-ci dans la source de la page:JavaScript: une barre oblique inverse dans le cadre de la chaîne

var db_1 = 'C:\this\path'; 

Quand je mets la valeur d'un champ de texte cette variable comme suit:

$('#myinput').val(db_1); 

Les barres obliques ont disparu et seuls les autres caractères sont laissés!

Pourquoi est-ce et comment puis-je mettre les barres obliques dans ??

Merci à tous

+0

var db_1 = 'C: \\ this \\ chemin'; – jAndy

Répondre

11

Une barre oblique inverse est un caractère d'échappement à JS. Ils sont perdus lorsque le littéral de chaîne est analysé.

Vous ne pouvez pas les remettre, car vous n'avez aucun moyen de dire où ils étaient. Vous devez vous assurer qu'ils restent dans la chaîne en premier lieu (en les représentant avec une séquence d'échappement).

var db_1 = 'C:\\this\\path'; 
+0

J'ai essayé d'utiliser '\' avec '\\' mais cela n'a pas fonctionné. – Abs

+1

Si par "remplacer" vous voulez dire "remplacer dans le code source" alors il devrait fonctionner (et fait pour moi). Si vous voulez dire "Utiliser la méthode de remplacement de la chaîne JavaScript", bien sûr, cela ne fonctionnera pas - je vous renvoie à la deuxième phrase de ma réponse. Il n'y a pas de caractère antislash dans la chaîne, juste des séquences d'échappement. Comme il n'y a pas de barre oblique inverse, vous n'obtiendrez aucun changement si vous essayez de les remplacer par autre chose. – Quentin

+0

Ah je vois, je vais faire un str_replace avec PHP alors. Merci! – Abs

2

Vous pouvez utiliser:

echo json_encode('C:\this\path'); 

json_encode peut être utilisé en fonction de filtre pour un code JavaScript .

Questions connexes