Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以HTML格式发布JSON数据_Javascript_Forms_Reactjs_Express_Multipartform Data - Fatal编程技术网

Javascript 以HTML格式发布JSON数据

Javascript 以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

我正在服务器的前端&expressJs上使用React。我有一些javascript
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'})