JavaScript:作为字符串一部分的反斜杠

IT技术 javascript jquery
2021-03-05 02:53:15

我有一个使用 PHP 回显的 JavaScript 变量,它在页面源代码中显示如下:

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

当我使用该变量设置文本字段的值时:

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

斜线消失了,只剩下其他字符了!

为什么会这样,我怎样才能把斜线放回去?

谢谢大家

3个回答

反斜杠是 JS 中的转义字符。当解析字符串文字时,它们会丢失。

你不能把它们放回去,因为你无法知道它们在哪里。您必须首先确保它们保留在字符串中(通过用转义序列表示它们)。

var db_1 = 'C:\\this\\path';
@Abs:原来需要输出为\\,事后无法修复。否则,您实际拥有的内容c:后跟一个制表符(\t是 Javascript 中制表),然后是hispath(因为\p不是特殊的,所以反斜杠被忽略)。所以 PHP 输出必须看起来像var db_1 = 'C:\\this\\path';这样才能转义反斜杠。
2021-05-01 02:53:15
如果 PHP 在您的设置中使用一级转义,您甚至可能需要将其编写为C:\\\\this\\\\path.
2021-05-02 02:53:15
啊我明白了,然后我会用 PHP 做一个 str_replace 。谢谢!
2021-05-04 02:53:15
我曾尝试将 '\' 替换为 '\\' 但这没有用。
2021-05-06 02:53:15
如果“替换”是指“在源代码中替换”,那么它应该可以工作(对我来说也是如此)。如果您的意思是“使用 JavaScript 字符串替换方法”,那么它当然行不通——我建议您返回我回答的第二句话。字符串中没有反斜杠字符,只有转义序列。由于没有反斜杠字符,如果您尝试用其他东西替换它们,您将不会得到任何更改。
2021-05-11 02:53:15

您可以使用:

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

json_encode 可以用作某些 JavaScript 代码的过滤器功能。

试试这个:

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

更多信息:http : //www.w3schools.com/js/js_special_characters.asp