我必须形成一个JSON字符串,其中一个值有新的行字符。这必须转义,然后使用AJAX调用发布。谁能建议一种用JavaScript转义字符串的方法?我没有使用jQuery。


当前回答

如果您的服务器端脚本是PHP,请使用json_encode(), Json_encode()转义换行符和其他意想不到的标记 (如果不使用PHP,请为您的脚本语言寻找类似的函数)

然后在JavaScript中使用$.parseJSON(),完成!

其他回答

根据user667073的建议,除了先重新排序反斜杠替换,并修复引号替换

escape = function (str) {
  return str
    .replace(/[\\]/g, '\\\\')
    .replace(/[\"]/g, '\\\"')
    .replace(/[\/]/g, '\\/')
    .replace(/[\b]/g, '\\b')
    .replace(/[\f]/g, '\\f')
    .replace(/[\n]/g, '\\n')
    .replace(/[\r]/g, '\\r')
    .replace(/[\t]/g, '\\t');
};

如果您的服务器端脚本是PHP,请使用json_encode(), Json_encode()转义换行符和其他意想不到的标记 (如果不使用PHP,请为您的脚本语言寻找类似的函数)

然后在JavaScript中使用$.parseJSON(),完成!

我在我的一个Ajax调用中得到了相同的情况,其中JSON由于Textarea字段中的换行符抛出了一个错误。这里给出的解决方案对我没用。 所以我使用Javascript的.escape函数,它工作得很好。然后,为了从JSON中检索值,我使用.unescape进行了反转义。

像你一样,我一直在寻找一些评论和帖子来替换我的JSON中包含html对象的特殊转义字符。

我的对象是删除JSON对象中的特殊字符,并渲染JSON对象内部的html。

以下是我所做的,希望使用起来非常简单。

首先我使用了JSON。stringify我的json对象和json。解析结果。

如:

JSON.parse(JSON.stringify(jsonObject));

它解决了我的问题,并使用纯Javascript。

恕我直言,Alex给出的答案是不正确的,婉转地说:

Alex试图转义的一些字符根本不需要转义(比如&和'); \b根本不是退格字符,而是一个单词边界匹配 需要转义的字符不会被处理。

这个函数

escape = function (str) {
    // TODO: escape %x75 4HEXDIG ?? chars
    return str
      .replace(/[\"]/g, '\\"')
      .replace(/[\\]/g, '\\\\')
      .replace(/[\/]/g, '\\/')
      .replace(/[\b]/g, '\\b')
      .replace(/[\f]/g, '\\f')
      .replace(/[\n]/g, '\\n')
      .replace(/[\r]/g, '\\r')
      .replace(/[\t]/g, '\\t')
    ; };

似乎是一个更好的近似。