我正在使用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
?
答案 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>