Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
193
rated 0 times [  199] [ 6]  / answers: 1 / hits: 61223  / 12 Years ago, sat, january 5, 2013, 12:00:00

I've created a simple HTML page that takes some input from the user to store on a server to be retrieved later -- this is how the text is treated when the user clicks a submit button (I've placed numbered comments under the key lines but provide the surrounding code for context):



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);
}
});


The request is sent to a NodeJS server I am running locally, which (within the http.createServer callback) does the following:



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 + ' })');
}
});
}


Assuming the user types and submits this is a line of text, the output on the server is a text file called jsonp-storage-2.txt containing this:



{ text: this is a line of text }


After all that, my question is quite simple. How do I prettify the output in the text file?



The code needs work but I'm thinking of using this to try storing larger objects for reading later. However, at the server end, I would like the files (for now) to be easy for me to read when opening them with Notepad, for example.



I have tried using n and t like so:



jsonText = '{nttext: ' + origText + 'n}',


I've also tried r. But the lines remain unbroken.



Some answers suggest that I can only do this at the level of the encoded string or after the file has been written. Perhaps I missed something simple. Is there a way to do it by manipulating my jsonText variable?



UPDATE:



Just to be clearer about the output desired -- currently the content of the text file produced looks like this:



{ text: this is a line of text }


But I'd like to know if it can be produced like this:



{
text: this is a line of text
}

More From » node.js

 Answers
10

Use



var os = require('os');
var jsonText = '{' + os.EOL + 'ttext: ' + origText + '' + os.EOL + '}';

[#81063] Friday, January 4, 2013, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
johnathanhakeems

Total Points: 487
Total Questions: 129
Total Answers: 100

Location: Fiji
Member since Fri, Nov 13, 2020
4 Years ago
;