【问题标题】:How to escape "&" ampersand character in form input using jQuery如何使用 jQuery 在表单输入中转义“&”符号
【发布时间】:2018-05-10 02:32:54
【问题描述】:

我的 jQuery 脚本通过 POST 方法发送数据时遇到问题。问题是当它通过 Ajax 发送数据时,如果句子中有“&”符号,它会在找到“&”时切断句子。

请查看下面的图片了解更多信息。

【问题讨论】:

    标签: php jquery ajax codeigniter


    【解决方案1】:

    htmlentites

    此函数在所有方面都与htmlspecialchars() 相同,除了htmlentites() 之外,所有具有HTML 字符实体等效项的字符都将转换为这些实体。

    如果您想要解码(相反),您可以使用html_entity_decode()。

    例子:

    echo htmlentities("&"); // &
    

    如果您直接在浏览器中执行此操作,您应该可以使用:

    encodeURIComponent(string input);
    

    例子:

    encodeURIComponent($.trim($("input[name=t-tim_rendered-"+id+"]").val().toString()));
    

    【讨论】:

      【解决方案2】:

      如果您将 data 参数作为 Javascript 对象传递,它将为您转换字符(并且 IMO 使代码看起来更整洁)。因此,您应该将 $.ajax 调用更改为以下内容:

      data: {"user_id": user_id, "time_r": time_r, "task_d": task_d, "p_id": p_id, "df": finished},
      

      【讨论】:

        【解决方案3】:

        您可以使用原生 javascript escape() 函数

        在第 74 行

        data: : "&task_d=" + escape(task_d) + "" 
        

        或者,您可以将查询字符串值括在引号中

        data: : "&task_d='" + task_d + "'" 
        

        【讨论】:

        • 谢谢!这解决了我的问题,这与原始问题类似。
        【解决方案4】:

        对于这种情况,我一直有一个很大的问题。

        这只是说 Andrew Koester 的最后一个答案是我一直在寻找的完美答案。

        如果您通过 .ajax() 调用将多个表单条目从 jQuery 表单传递到 PHP,如下所示:

        数据:"name=" + name + "&message=" + message + ...

        不要使用此方法,它会阻止用户在表单的任何输入字段上写入与号 (&) 字符。

        按照 Andrew 的建议改用这个:

        数据:{“名称”:姓名,“电子邮件”:电子邮件,“主题”:主题,“cmets”:cmets},

        这样,用户可以编写任何类型的特殊字符,而不必担心与 ajax 声明冲突。

        【讨论】:

          【解决方案5】:

          您可以使用“encodeURIComponent”来完成该组件的 URL 编码。我使用了这个并在浏览器 IE、Firefox 和 Chrome 上进行了验证。

          【讨论】:

          • 这个问题真的很老,这对解决问题没有任何新的贡献。你应该考虑写一条评论,或者在你被允许的时候投票。
          猜你喜欢
          • 2018-05-29
          • 2018-07-09
          • 2022-01-20
          • 2015-01-21
          • 1970-01-01
          • 1970-01-01
          • 2011-01-10
          • 1970-01-01
          相关资源
          最近更新 更多