Размещать данные в формате JSON в формате HTML - PullRequest
0 голосов
/ 11 мая 2018

Я использую React на front & end & expressJs для сервера.У меня есть некоторые данные javascript Object для отправки на сервер.Я JSON.stringify данных и затем сохраняю их в <textarea/> в форме и я просто публикую их.

Я использую модули '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 работает так, как я могу fetch данные из URL-адреса и отображения на передней панели.Это форма отправки сообщения, которая не работает.

Спасибо

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Поля ввода формы HTML должны иметь атрибут name, который будет принят, иначе они игнорируются при отправке формы. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input

Выше работает со следующим изменением:

...
// added name attribute
<textarea name="reqData" defaultValue={JSON.stringify({ collection, fieldSets, responseType: 'csv' })} />
...
0 голосов
/ 11 мая 2018

JSON.stringify просто зафиксирует объект.в вашем случае выглядит как будто вы заменяете объект.ваш синтаксис выглядит так:

JSON.stringify(obj, replacer, space)

лучше сохранить ваши данные в одну переменную и просто привести их в строковое значение, передав в качестве первого параметра этот параметр.

см. https://www.w3schools.com/jsref/jsref_stringify.asp

...