【问题标题】:AJAX issue involving & symbol with string.AJAX 问题涉及带字符串的 & 符号。
【发布时间】:2012-04-23 01:09:21
【问题描述】:

我有一个隐藏的输入,它采用文章名称。标题中包含符号“&”。

<input name="art" type="hidden" id="art" value="<?php echo $rew['art']; ?>"/>

当我提交表单时,$_POST 没有注册完整的文章标题。它只上升到 & 的位置,其余的都是空白的。

我想要这个:“This is & was.”

但我得到:“这是”。

我怎样才能使我在提交表单时获得“&”符号和剩余的上下文。

我也在数据库中搜索。我现在的问题是在“&”之后得到标题的其余部分

【问题讨论】:

    标签: html ajax forms post


    【解决方案1】:

    您需要通过 htmlspecialchars 函数转义 HTML 实体:

    <input name="art" type="hidden" id="art" value="<?php echo htmlspecialchars($rew['art']); ?>"/>
    

    根据下面 cmets 中的讨论,您还需要转义为 Ajax 请求生成的 URL 中的 & 符号。您可以在 JavaScript 中使用 encodeURIComponent 函数来执行此操作:

    var dataString = '&topic' + encodeURIComponent(topic);
    

    【讨论】:

    • 记得指定你的字符编码。以下是有关该主题的一些读物:blog.astrumfutura.com/2012/03/…
    • 我试过了。它行不通。因为即使它在 &格式,它仍然以 & 的形式通过我的表单。表单只是不想注册该符号。有可能是因为它是ajax形式吗?
    • 这很奇怪。当您使用htmlspecialchars 提交此表单时,您可以发布print_r($_POST) 的输出吗?
    • 是的。它只显示“&”之前的字符。但是当我查看我的代码时,我开始认为它是我的 jquery+ajax。因为在代码中,var datastring 是这样设置的: var dataString = '&topic='+ topic;脚本中的 amp 符号是否可能导致此错误?在 & 之后它试图找到另一个字符串?
    • 是的,这几乎肯定是问题所在。您应该更新原始问题以说明您也在使用 Ajax。我已经用另一种可能的解决方案更新了我的答案。
    【解决方案2】:

    您可以将&amp;amp; 替换为&amp;amp;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 2016-11-25
      • 2011-05-20
      • 1970-01-01
      • 2022-01-24
      • 2020-05-14
      相关资源
      最近更新 更多