我想捕获我的搜索词并将它们传递给一个JavaScript变量,但是我不知道如何处理可能出现的引号。
以下是我目前的情况:
var searchTerms = "<!--#echo var="terms"-->";
var pattern = / /g;
newSearchTerms = searchTerms.replace(/[^a-zA-Z 0-9]+/g,'');
var searchStr=newSearchTerms.replace(pattern,"_");我担心“术语”应该包含双引号(或者如果我在JS中使用单引号),那么我的函数就会失败。
如何在字符串进入脚本之前将其转义?
谢谢,
史蒂夫
编辑/回答:最后,我将它移动到一个捕获并解析查询字符串的外部脚本中,而不是在HTML中回显它。
发布于 2008-12-18 19:13:47
如果terms包含引号,那么当您完成var searchTerms = "<!--#echo var="terms"-->";操作时,替换任何引号已经太晚了,您的JavaScript将无效。例如,如果terms包含--这些是您的JavaScript将显示的“术语”(并在浏览器中产生语法错误):
var searchTerms = "These are the "terms"";如果您确信terms只包含双引号,则可以:
var searchTerms = '<!--#echo var="terms"-->';
如果可以同时包含单引号和双引号,则需要使用比<!--#echo var="..."-->更复杂的服务器端技术对服务器上的输出进行净化。
发布于 2008-12-18 19:36:11
从您的代码来看,您似乎在使用Apache包含的内容。echo SSI有一个名为encoding的属性,它允许您指定url样式的编码。您可以用这种方式对引号进行编码,只需使用unescape()在Javascript中取消编码即可。
试试这个:
var terms = "<!--#echo encoding="url" var="terms"-->";
terms = unescape(terms)发布于 2008-12-18 19:19:26
我会为搜索文本框的onchange事件添加一个javascript。捕获击键,忽略可能输入的引号和任何其他特殊字符。如果输入来自服务器端,则在将其发送到脚本之前对其进行清理。
https://stackoverflow.com/questions/378848
复制相似问题