【问题标题】:Passing strings having special characters传递具有特殊字符的字符串
【发布时间】:2012-09-07 18:58:26
【问题描述】:

我正在尝试传递带有空格和特殊字符的字符串,但它出现错误并且没有任何工作。 例如

 <img onclick='addKeyword("celebritynews&gossip");' src="images/plus.png" >

但是字符串名人新闻和八卦中的“&”正在破坏代码。

我发现问题出在addKeyword 函数中,我使用以下代码定义了一个名为 url 的变量,

function addKeyword(categoryId){
var url = "addKeyword.php?uid=" + user_id + "&categoryId=" + categoryId + "&keyword=" + $("#keyword_" + categoryId).attr("value");
}

并且 $("#keyword_" + categoryId) 引起了问题。有什么办法解决吗?

【问题讨论】:

  • 请提供一些实际代码和实际错误(如果可以的话)。
  • 您的字符串需要转义。你如何做到这一点取决于字符串出现的上下文。你必须提供一些关于你如何传递这个字符串的更多信息,以及究竟是什么误解了它。
  • 语法错误无法识别表达式:名人新闻&八卦

标签: php javascript jquery html web


【解决方案1】:

假设您在 URL 上传递字符串,则参数值需要进行 URL 编码。

...摘要编辑...

&amp;amp; 被解释为 HTML 并且必须是 HTML 编码,特别是 &amp;amp;

HTML

<img onclick='addKeyword("celebritynews&amp;gossip");' src="images/plus.png" />

JavaScript

使用 encodeURIComponent(s)。

var url = "addKeyword.php?uid=" + encodeURIComponent(user_id) + "&categoryId=" + encodeURIComponent(categoryId) + "&keyword=" + encodeURIComponent($("#keyword_" + categoryId).attr("value")); 

【讨论】:

  • 不,我没有传递字符串,我只是想提醒它,即在函数中使用它。
  • 那么问题可能出在addKeyword()函数内部。
  • 好的。感谢您为问题添加更多内容。 &amp;amp; 被解释为 HTML 并且必须是 HTML 编码的,特别是 &amp;amp; &lt;img onclick='addKeyword("celebritynews&amp;amp;gossip");' src="images/plus.png" /&gt;
  • 是的@Blazemonger 我认为你是对的,我正在使用以下代码....function addKeyword(categoryId){ //alert(categoryId); var user_id=''; var url = "addKeyword.php?uid=" + user_id + "&categoryId=" + categoryId + "&keyword=" + $("#keyword_" + categoryId).attr("value");}
  • 好的。 jQuery "#keyword_" + categoryId 意味着 id 是 id="keyword_celebritynews&gossip"。最佳做法是删除/替换特殊字符(例如引号、& 等),以使 ID 有效。你可以尝试 document.getElementById("keyword_" + categoryId) 而不是 jQuery,以防 jQuery 在 '&' 上窒息。
【解决方案2】:

试试

<img onclick="addKeyword('<?php echo htmlspecialchars('celebritynews&gossip'); ?>')" src="images/plus.png" >

【讨论】:

  • 请再读一遍这个问题,我稍微修改了一下。 addKeyword() 函数中的 $("#keyword_" + categoryId) 出现问题。
  • $("#keyword_" + categoryId.replace(/&/g, "&"))
  • 哦,我以为你想要的是 js 中的函数,而不是 PHP 中的 :)
【解决方案3】:

假设您正在将此文本写入页面,您可以使用htmlspecialchars 确保它在 HTML 中正确转义。

例如:

<?php echo htmlspecialchars("celebritynews&gossip"); ?>

这有帮助吗?

【讨论】:

  • 不,它没有帮助,使用您描述的函数的输出是“celebritynews&gossip”,这个“&”正在破坏代码,我认为 javascript 假设这是一个按位和。
猜你喜欢
  • 1970-01-01
  • 2011-04-11
  • 2019-09-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-04
  • 2021-01-21
  • 2020-08-13
  • 2020-07-12
相关资源
最近更新 更多