掩蔽&对于AJAX请求

时间:2009-11-23 19:58:13

标签: javascript html ajax validation

这是几个星期前我问过的一个问题的后续行动。

以下内容:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Test</title>
</head>
<body>
<a onclick="start_ajax_request('url.php&key1=val1&key2=val2&key3=val3')">Test</a>
</body>
</html>

在W3C验证器中验证为HTML 4.01过渡,错误地,据我所见。它抱怨实体,并希望每个&符转换为&amp;。但是,在给定的上下文中&amp;会出错,因为我的Ajax请求需要简单的&符号,并且在被&amp;时会中断。

在这个示例中,有没有办法屏蔽/转义&符号,这样它仍然是一个有效的URL,它将通过Ajax请求,并关闭验证器?

4 个答案:

答案 0 :(得分:2)

或者,您可以在JavaScript中分配onclick。这样更好,因为它可以使您的标记更清晰。这是一个jquery解决方案。

$('a').bind('click', function() {
  start_ajax_request('url.php?key1=val1&key2=val2&key3=val3');
});

答案 1 :(得分:1)

尝试使用JS escape()函数并将&符号作为%26传递。同样的方式我确定你看到空格传递为%20

希望它有效

答案 2 :(得分:1)

您应该使用encodeURIComponent() function发送URL字符串,然后在接收方中对其进行解码。如果您使用的是PHP,则需要执行以下操作:

utf8_decode(rawurldecode(str));

答案 3 :(得分:0)

我不是专家,我不知道我的答案是否与您的问题完全相关。

我遇到了类似的问题,但在相反的方向上,我注意到当我创建一个onclick事件,其中参数通过json格式的ajax接收,解析并放置在文档中,当我查看源代码时,我得到了一些东西像

<a href="#" onclick="qString('blah.php', 'ipp=2&amp;ord=0');">blah</a>

但是这并没有阻止应用程序工作,我以前从来没有遇到过问题,因为我不使用&amp;作为参数值的一部分,如果值是用户输入,我使用encodeURIComponent对值进行编码。

所以我继续并且放弃了任何json解析问题或ut8相关问题,当我意识到在html中使用javascript时&amp;放大器;而不是&amp;实际上是正确的。

所以在我的情况下,我想了一会儿不行,W3C valitador还可以。

尝试:

<html>
<head>
<title>Test</title>
<script language="javascript">
    function foo(url) {
        alert(url.indexOf('&'));
        alert(url.indexOf('&amp;'));
        return false;
    }
</script>
</head>
<body>
<a href="#" onclick="foo('url.php?key1=val1&amp;key2=val2&amp;key3=val3');">Test</a>
</body>
</html>