Json.stringify()函数以正确的格式输出结果

时间:2016-06-22 10:49:37

标签: javascript

我正在使用json.stringify()函数将我的结果打印到正确的div输出1中。

$("div#output1").html(JSON.stringify(response))

结果是:

" {\n \"prediction\": \"Positive\",\n \"confidence_score\": {\n \"Positive\": \"56.49\",\n \"Negative\": \"43.51\"\n }\n}\n\r\n"

如何删除这些\n \ \r

2 个答案:

答案 0 :(得分:6)

使用text()代替html()

$("div#output1").text(JSON.stringify(response));

这将在DOM中创建一个正确的文本类型节点,而不是转义为HTML。

如果问题仍然存在,则可能是服务器端。在这种情况下,请查看HTTP响应以查看实际从服务器获取的内容。

在chrome上,按F12打开开发工具,转到网络,用F5重新加载页面并再次激活AJAX请求。此时,您将看到HTTP请求/响应条目。单击它,然后检查响应表,在那里您将看到服务器提供的原始ASCII数据。如果仍然逃脱,则问题是服务器端。

在PHP中使用var_dump()将该字符串直接输出到页面上(不使用AJAX)并查看它。它可能已在数据库中转义。在这种情况下,你将不得不在响应管道的某个地方取消它。最简单的方法是在客户端直接在JS中进行转换。这不需要您更改应用程序的其余部分(即输入表单)。事实上,在数据库中保存转义字符串是一个好主意。

您可能希望为文本节点的输出添加<pre>标记:

<pre id="output1"></pre>

答案 1 :(得分:1)

我不确定你是如何获得这种奇怪的输出的。 正如你在片段中看到的那样,json没有\n和朋友。

我使用pre代替div,因此如果\n存在,则会创建一个新行。

var response = {
  "prediction": "Positive",
  "confidence_score": {
    "Positive": "56.49",
    "Negative": "43.51"
  }
};

$("pre#output1").html(JSON.stringify(response));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre id="output1"></pre>

但是,您可以对字符串执行的操作是替换值... 像这样:

var output = " {\n \"prediction\": \"Positive\",\n \"confidence_score\": {\n \"Positive\": \"56.49\",\n \"Negative\": \"43.51\"\n }\n}\n\r\n";
$('#original').html(output);
$('#output1').html(output.replace(/\r|\n|\"/g, ''));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
original:
<pre id="original"></pre>
output:
<pre id="output1"></pre>