客户端
.. some form
<textarea name="data"></textarea>
我会输入textarea,如下所示
{title: 'Hello one!', author: 'someone'}
{title: 'Hello two!', author: 'mygf'}
{title: 'Hello three!', author: 'darthvader'}
最后提交表格,
服务器
服务器将超越
'{title: \'Hello one!\', author: \'someone\'}\r\n
{title: \'Hello two!\', author: \'mygf\'}\r\n
{title: \'Hello three!\', author: \'darthvader\'}\r\n'
此时如何转换它?
我试过了:
var dataArray = req.body.data.split('\r\n');
for (var i=0; i< dataArray.length; i++){
console.log(dataArray[i].title) // err because dataArray[i] is not obj
}
如何正确制作objectdarray?
答案 0 :(得分:2)
你拥有的是无效的JSON。如果您使用valid JSON(用双引号括起来的键和字符串值),那么您只需使用JSON.parse():
var data = '{"title": "Hello one!", "author": "someone"}\r\n{"title": "Hello two!", "author": "mygf"}\r\n{"title": "Hello three!", "author": "darthvader"}';
var dataArray = data.split('\r\n');
for (var i=0; i<dataArray.length; i++){
dataArray[i] = JSON.parse(dataArray[i]);
console.log(dataArray[i]);
}
如果你想允许无效的JSON,你需要分析字符串并弄清楚键和位置的位置。值是,并将它们添加到新创建的对象。
答案 1 :(得分:-1)
首先,它不是JSON。它只是javascript中的一些数据数组。为什么?因为JSON在每个键和值中使用引号,如
{"key":"value"}
第二,帮助减少编码。您可以添加隐藏的输入并将其设置为textarea值。看看这段代码:
<textarea id="txta" name="txta">
<input type="hidden" name="txtahid" id="txtahid" value="">
<script>
setInterval(function(){
document.getElementById("txtahid").value = document.getElementById("txta").value
},200);
</script>
希望它可以帮到你。
答案 2 :(得分:-2)
<textarea id = "textData" name="data"></textarea>
let textdata = $('#textData').value;
从客户端发送文本时 你可以用
let res = JSON.stringify(textdata);
并在获取数据时
var dataArray = JSON.parse(req.body.data);
所以textArea数据保持不变。