Javascript 以HTML格式发布JSON数据
我正在服务器的前端&expressJs上使用React。我有一些javascriptJavascript 以HTML格式发布JSON数据,javascript,forms,reactjs,express,multipartform-data,Javascript,Forms,Reactjs,Express,Multipartform Data,我正在服务器的前端&expressJs上使用React。我有一些javascriptObject数据要发送到服务器。我JSON.stringify数据,然后将其存储在表单中,然后我就发布它 我使用模块“body parser”进行一般api调用,并使用“multer”进行多部分表单提交 前端代码: <div> <form action="/api/query" method="POST"> {/* following textarea value lo
Object
数据要发送到服务器。我JSON.stringify
数据,然后将其存储在表单中
,然后我就发布它
我使用模块“body parser”进行一般api调用,并使用“multer”进行多部分表单提交
前端代码:
<div>
<form action="/api/query" method="POST">
{/* following textarea value looks like this:
{"collection":"Contract","fieldSets":[{"field":"location","value":"London","andOr":""}],"responseType":"csv"} */}
<textarea defaultValue={JSON.stringify({ collection, fieldSets, responseType: 'csv' })} />
<Button type="submit">Download</Button>
</form>
</div>
const express = require('express');
const bodyParser = require('body-parser');
const multer = require('multer');
const upload = multer();
const app = express();
app.set('port', 1111);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
// for parsing multipart/form-data
app.use(upload.array());
app.use(express.static('public'));
app.post('/query', (req, res) => {
// here I keep getting reqbody as an empty {}
console.log('reqbody is...', req.body);
但是,我一直在服务器上的req.body
中获取{}
。
要澄清的是,/api/query
确实起作用,因为我能够从url获取数据并显示在前端。这是一个不起作用的表单提交帖子
谢谢JSON。stringify只会stringify对象。在您的情况下,看起来您正在替换对象。您的语法看起来像
JSON.stringify(obj、replacer、space)
最好将数据保存在一个变量中,并将其作为第一个参数传递给该变量,从而使其字符串化
参考:
HTML表单输入字段应具有要接受的名称
属性,否则在表单提交中会忽略它们
上述工作发生以下变化:
...
// added name attribute
<textarea name="reqData" defaultValue={JSON.stringify({ collection, fieldSets, responseType: 'csv' })} />
...
。。。
//添加了名称属性
...
谢谢你回来。我想您可能被语法(es2015)弄糊涂了,我正在json.stringify中传递一个对象。我也试过你的方法,我在服务器上得到同样的空{}。最好的情况是,如果您传递的是如上代码所示的相同的was,那么您就不会传递“collection&fieldset”的值。尝试传递collection=someCollection&fieldset=someset等值。我强烈建议您在浏览器控制台中尝试上述代码样式。你会意识到它是有效的:)上面的意思仅仅是:JSON.stringify({collection:…collection,fieldset:…fieldset,responseType:'csv'})