作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我创建了一个简单的 HTML 页面,它从用户那里获取一些输入以存储在服务器上以供以后检索——这就是当用户单击提交按钮时处理文本的方式(我放置了编号的注释在关键行下,但提供上下文的周围代码):
var origText = $('#input-field').val(),
// 1. GETS WHATEVER USER TYPED INTO INPUT FIELD
jsonText = '{ "text": "' + origText + '" }',
// 2. WRAPS IT AN OBJECT STRING
ajaxText = encodeURIComponent(jsonText);
// 3. ENCODES THE STRING FOR USE WITH AJAX
$.ajax({
url: 'http://localhost:8124/',
data: 'save=' + ajaxText + '&fn=save',
// 4. THE ENCODED STRING IS ADDED TO THE QUERY SECTION OF THE AJAX REQUEST
dataType: "jsonp",
cache: false,
timeout: 5000,
success: function(data) {
$("#input-ready").html(data.save.text);
},
error: function(jqXHR, textStatus, errorThrown) {
alert('error ' + textStatus + " " + errorThrown);
}
});
请求被发送到我在本地运行的 NodeJS 服务器,它(在 http.createServer
回调中)执行以下操作:
var queryObj = url.parse(req.url, true).query;
// 1. GET THE QUERY PART OF THE REQUEST/URL AS AN OBJECT
res.writeHead(200, {'Content-Type': 'application/javascript'});
// 2. PREPARE SERVER'S RESPONSE AS JAVASCRIPT
queryObj.fn = queryObj.fn || '';
queryObj.save = queryObj.save || '';
queryObj.callback = queryObj.callback || '';
// 3. ENSURE THE PROPERTIES NEEDED ARE DEFINED, EVEN IF FALSE-Y
if (queryObj.fn === 'save') {
// 4. IF THE REQUEST IS TO SAVE THEN WRITE THE USER INPUT AS OBJECT TO A TEXT FILE
fs.writeFile('jsonp-storage-2.txt', queryObj.save, function (err) {
if (err) {
throw err;
} else {
console.log('Saved message successfully.', 'Ready to be read now.');
res.end(queryObj.callback +
'({ fn: "' + queryObj.fn + '", save: ' + queryObj.save + ' })');
}
});
}
假设用户键入并提交“这是一行文本”,服务器上的输出是一个名为 jsonp-storage-2.txt 的文本文件,其中包含:
{ "text": "this is a line of text" }
毕竟,我的问题很简单。如何美化文本文件中的输出?
代码需要工作,但我正在考虑使用它来尝试存储更大的对象以供以后阅读。但是,在服务器端,我希望文件(现在)在使用记事本打开文件时易于阅读。
我尝试过像这样使用 \n
和 \t
:
jsonText = '{\n\t"text": "' + origText + '"\n}',
我也试过 \r
。但线条仍然没有中断。
一些答案表明我只能这样做 at the level of the encoded string或 after the file has been written .也许我错过了一些简单的事情。有没有办法通过操纵我的 jsonText
变量来做到这一点?
更新:
只是为了更清楚地了解所需的输出 -- 目前生成的文本文件的内容如下所示:
{ "text": "this is a line of text" }
但我想知道它是否可以这样制作:
{
"text": "this is a line of text"
}
最佳答案
使用
var os = require('os');
var jsonText = '{' + os.EOL + '\t"text": "' + origText + '"' + os.EOL + '}';
关于javascript - 如何在 JavaScript 字符串中创建换行符以提供给 NodeJS 以写入文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173150/
我是一名优秀的程序员,十分优秀!