Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中避免url中的特殊字符_Javascript_Asp.net_Special Characters - Fatal编程技术网

在javascript中避免url中的特殊字符

在javascript中避免url中的特殊字符,javascript,asp.net,special-characters,Javascript,Asp.net,Special Characters,我有一个树状视图,动态添加节点,并在每个节点上添加javscript click函数。。这里thisFileNode.Value有url值,避免了url中的spl字符,我在代码中使用了转义函数。。还是不行。。 有人能帮我吗 我不熟悉逃跑,它到底是干什么的???那怎么做呢 thisFileNode.NavigateUrl = "javascript:clickNode(this, escape('" + thisFileNode.Value + "'));" 如果url中有任何spl字符应

我有一个树状视图,动态添加节点,并在每个节点上添加javscript click函数。。这里thisFileNode.Value有url值,避免了url中的spl字符,我在代码中使用了转义函数。。还是不行。。 有人能帮我吗

我不熟悉逃跑,它到底是干什么的???那怎么做呢

   thisFileNode.NavigateUrl = "javascript:clickNode(this, escape('" + thisFileNode.Value + "'));"

如果url中有任何spl字符应该删除,如何获取有效的url???

使用HttpUtility.JavaScriptStringEncode:

      thisFileNode.NavigateUrl = "javascript:clickNode(this, '" + 
        HttpUtility.JavaScriptStringEncode(thisFileNode.Value) + "');"

或者,您也可以手动转义特殊字符:

thisFileNode.NavigateUrl = "javascript:clickNode(this, '" + HtmlEscape(thisFileNode.Value) + "');"
HtmlEscape方法:

public static string HtmlEscape(string str)
    {
        return str
        .Replace("&", "&")
        .Replace("\"", """)
        .Replace("'", "'")
        .Replace("<", "&lt;")
        .Replace(">", "&gt;");
    }
}
publicstaticstringhtmlescape(stringstr)
{
返回str
.替换(“&”、“&;”)
.替换(“\”,“”)
.替换(“'”、“';”)
.替换(“,”);
}
}

在javascript中,您可以使用
encodeURI(str)
对URL进行编码,或者使用
encodeURIComponent(str)
对URL的一部分进行编码(例如作为组件提供的URL)。更多的解释

使用
decodeURI(str)
decodeURIComponent(str)
获取原始字符串

这是因为这些方法将url中禁止的特殊字符替换为转义字符串,例如
&
变成
&

thisFileNode.NavigateUrl = 
    "javascript:clickNode(this, decodeURI('" + thisFileNode.Value + "'));"
注意:如果
thisFileNode.Value
是URL或要插入到URL中,则这与此相关


您可能还需要(或者相反地)转义引号等可能被javascript本身误解的内容。我不是.Net专家,但是
HttpUtility.JavaScriptStringEncode
应该可以做到这一点。您不需要解码字符串,因为它正好允许您设置javascript字符串。

多亏了onof,现在我可以在我的javascript中获得编码值。。。我如何在没有特殊字符的情况下将其解码为原始url。@Javascript中的ParvathiNair使用decodeURI。服务器端您不需要任何关于v2.0的提示吗
JavaScriptStringEncode
仅在.NET v4.0中使用。@您可以使用该函数的反编译版本: