通过&通过javascript生成的URL?

时间:2011-11-11 16:25:30

标签: javascript url ampersand html-escape-characters

当我的页面中的ddl发生变化时,我会执行这行代码 -

location.href = '@Url.Action("Edit", "Page", new { UserId = (string)null })/' + '@ViewBag.userId' + '?status=' + '@ViewBag.status' + '&pageNo=@ViewBag.PageNo';

链接工作正常只有一个&,但在检查了标记验证器http://validator.w3.org/check之后,它建议我替换&与&我在上面的代码行中已经这样做了。现在,当我更改ddl &字面上出现在网址中并且页面无法正常工作(由ddl过滤)。

<script type="text/javascript">
$(document).ready(function () {
 $(".ddl").change(function () { changePage(); });

 }); 

    function changePage() {
        location.href = '@Url.Action("Edit", "Page", new { UserId = (string)null })/' + '@ViewBag.userId' + '?status=' + '@ViewBag.status' + '&amp;pageNo=@ViewBag.PageNo';
}

</script>

有人能告诉我我做错了吗?

2 个答案:

答案 0 :(得分:2)

我能想到的最简单的一个问题是:您可能希望将您的javascript代码放在外部javascript中并再次执行w3c验证。

答案 1 :(得分:1)

基本问题是您通过将其用作text/html

来使用XHTML

如果文档被解析为XML,那么您需要在脚本元素中将&表示为&amp;,但由于您声称该文档是HTML,因此您不能这样做

请参阅the compatibility guidelines

  • 将您的JS保存在外部文件中
  • 用CDATA标记包装
  • 使用HTML而不是XHTML