Как отправить данные из React в NodeJS?

#javascript #node.js #axios

#javascript #node.js #axios

Вопрос:

Это мой код, в котором он состоит из файла React и файла Js.

 // React File //
... 

searchdata = this.state.value;        
console.log(`Search Data : ${searchdata}`);                
axios.post(BASE_URL   '/nameSearch',searchdata)  //
... 

// Js File //
...

app.post(('/nameSearch'),function(req,res)
{
console.log(req.body);
datasearch = req.body;
console.log(`This name search is :` datasearch);
});

...
 

Ошибки :
не определено

Поиск по имени: не определено

Какие-либо решения?

Ответ №1:

Прежде всего удалите переносную скобку из (‘/ nameSearch’), сделайте ее ‘/nameSearch’ . Затем, чтобы получить доступ к телу запроса в nodejs, вам нужно использовать анализатор тела. Итак, в ваш файл nodejs добавьте следующий код:

 const bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ extended: true }));

app.use(bodyParser.json());
 

Также не забудьте установить body-parser в свой проект, выполнив:

 npm i --s body-parser
 

в корневом каталоге вашего проекта.

Надеюсь, это поможет!

Ответ №2:

Спасибо, ребята!

Вот мой последний код.

 //  React File
...
    searchdata = this.state.value;
    console.log(`Data Search : ${searchdata }`);
    const datasearch = {
        searchdata:this.state.value
    }
    axios.post(BASE_URL   '/nameSearch',datasearch)
...
//
// Js File
app.post('/nameSearch',function(req,res){
console.log(req.body.searchdata);
datasearch = req.body.searchdata;
console.log(`This name search is :`, datasearch);
})
...
//
 

Это работает! Вывод из текстового поля react будет отображаться в консоли nodejs.

Спасибо 🙂

Ответ №3:

попробуйте удалить ()

 const searchdata = this.state.value;        
console.log(`Search Data : ${searchdata}`);                
axios.post(BASE_URL   '/nameSearch',searchdata)


app.post('/nameSearch',function(req,res){
 console.log(req.body);
 const datasearch = req.body;
 console.log(`This name search is :`, datasearch);
})
 

Комментарии:

1. Все то же, что и undefined

2. @HazimanHamzil проверьте отредактированный код выше. Если ошибка все еще возникает, сообщите мне ваши данные поиска this.state.value

3. Я удалил (), а также точку с запятой, в результате ошибка все еще не определена

4. Значение данных поиска: dadaada, которое я ввел в текстовое поле в файле react

5. Если searchdata это не объект, попробуйте этот axios.post(BASE_URL ‘/nameSearch’,{searchdata})

Ответ №4:

Если вы используете Express на своем Node.js сервер, для обработки запроса вам необходимо включить его для анализа тела данных post.

Если вы этого не сделали:

Включите это перед обработкой любого запроса (Express версии 4.16 и выше)

app.use(express.json())

Комментарии:

1. Этот код помогает отображать выходные данные из undefined в {} . Что это значит?

2. этот фрагмент кода позволяет express анализировать тело post-запросов. но, похоже, вы отправляете пустой объект в запросе post (из вашего файла react). попробуйте сначала проверить это.