Javascript window.prompt变量包含反斜杠
我有一个超链接页面(自然地)从SQL表构建,但一些超链接实际上是网络资源(即\ server \ path)。对于那些我设置了jQuery语句来找到它们并用<a onclick='window.prompt...>
替换那些<a href>
标签,以便网络位置将在提示的文本框中,然后用户可以将其复制并粘贴到Windows资源管理器中。问题是,所有反斜杠都被删除。我知道你通常必须使用双反斜杠将它们转义出来,我没有手动放置路径,它们来自SQL表格,我使用变量将它们放入提示中。任何人都可以告诉我们是否有解决方案?Javascript window.prompt变量包含反斜杠
else if (($link.length > 0) && ($link.substring(0, 4) != "http")) {
$('.linktext', $this.closest('tr')).after("<span><a href='#link' onclick='window.prompt(\"This resource is located on a network drive and is not accessible via the web browser. Please copy the link and paste into Windows Explorer.\",\""+$link+"\");'>Text</a></span>");
}
提示工作,但文本区域看起来就像这\serverfolder1folder2file.ext
我只是想到了一个简单的解决方案,它可以在从SQL中加载后“转义”URL值。这样我可以有选择地针对什么逃离,并保留正常的http URL,因为它们是:
else if (($link.length > 0) && ($link.substring(0, 4) != "http")) {
$linkescaped = $link.replace(/\\/g, "\\\\");
$('.filter', $this.closest('tr')).after("<span><a href='#link' onclick='window.prompt(\"This resource is located on a network drive and is not accessible via the web browser. Please copy the link and paste into Windows Explorer.\",\""+$linkescaped+"\");'></a></span>");
}
使用两个反斜杠,而不是一个:\\server\\path
。
的JavaScript字符串中的反斜线/正则表达式有被转义字符的特殊含义:
var stringWithNewLine = "This
doesn't work"; //Error
var stringWithNewLine = "This\ndoes work"; //Escaped new-line feed.
mysql_real_escape_string()
是您的解决方案。
echo mysql_real_escape_string("hello\world");
输出
hello\\world
所以只要你传回给客户端之前逃脱你的服务器值。
假设他使用php ...和mysql ... – James
这并不完全回答我的问题。我意识到我需要有两个反斜杠,但问题是如何让它们成为从SQL表传递的字符串。我想出了一个解决方案,但感谢你的回应。 – kramden88
如果您的解决方案与我的答案完全不同,请将其作为新回复发布并接受。 –