【问题标题】:Encode/decode html tags in javascript在 javascript 中编码/解码 html 标签
【发布时间】:2015-12-10 11:28:14
【问题描述】:

我有一个使用 nicEdit 插件美化的文本区域。

我需要通过 ajax 帖子将生成的代码发送到我的 php 服务器。我应该怎么做才能转义 html 标签并在我的服务器中接收它们?

另外,我需要通过另一个 ajax 调用在另一个网页中显示它们。为了在从php接收后解码它们,我也应该怎么做?

这是我尝试过的json:

{'title':'srefzgseg','text':'<a href="link_to_page">s</a>drhgrdshgrdghrdgdgrdg<img src="http://www.joomlaworks.net/images/demos/galleries/abstract/7.jpg" alt="dgfvsegfseg" align="none">'}

我的功能:

function saveData(){
    var title = $("#titulo").val();
    var text = new nicEditors.findEditor('new_area').getContent();
    var jsonNew = "{'title':'"+title+"','text':'"+text+"'}";
    console.log(jsonNew);
    $.ajax({
        type: "POST",
        url: "./server/saveNewData.php",
        contentType: "application/json; charset=utf-8",
        data: jsonNew,
        dataType: "json",
        success: function(response) {
        },
        error:function(xhr, status, message) {console.log(message); alert("Ha ocurrido un error al guardar los datos");}
    });
}

【问题讨论】:

  • 你为什么需要逃避它们?如果您设法输入它们,您还可以在另一侧阅读它们。 PHP 不会对他们做任何特别的事情。如果您想在 HTML 页面中显示 HTML 源代码,则唯一需要转义标签。
  • 如果我的文本中不包含 html 标签,php 服务器会收到该文本,在我这样做的那一刻,我的服务器中没有收到任何内容。此外,如果我尝试使用 jsonlint,json 文件的格式也不是很好
  • 您是输入了 HTML,还是已经在 textarea 中预填了 Text+HTML?在后一种情况下,您需要在将代码输出到文本区域元素时对其进行转义。如果您刚刚输入它并且 AJAX 失败,请分享更多详细信息,例如代码的相关部分以及您从 JavaScript 控制台和 PHP 日志中获得的任何错误。
  • 我用我的函数和一个json文件的例子更新了我的问题
  • 你是如何构建 JSON 的?它使用单引号,这是无效的。

标签: javascript html json ajax nicedit


【解决方案1】:

您的 JSON 无效。 JSON 中的字符串应该有双引号。

如果字符串中也需要双引号,则需要使用反斜杠对其进行转义。

但与其自己编写解决方案,不如让 JavaScript 处理 JSON 序列化,就不会出现这个问题:

var o = {};
o.title = $("#titulo").val();
o.text = new nicEditors.findEditor('new_area').getContent();
var jsonNew = JSON.stringify(o);

【讨论】:

  • JSON 不需要字符串化,jQuery 可以自动处理。
  • 这行得通。我不知道 stringify 方法。谢谢! VisioN,没有 stringify 也可以吗?
  • 是的,如果你只是传递o,jQuery 应该在屏幕后面对其进行字符串化。
猜你喜欢
  • 2011-05-18
  • 2015-03-02
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 2011-06-09
相关资源
最近更新 更多