dmc1989
@dmc1989

Как правильно принять данные в Node.js через Ajax?

Подскажите пожалуйста почему не работает следующий код?

Сервер:
var express =require('express'),
    app = express();

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

// parse application/x-www-form-urlencoded 
app.use(bodyParser.urlencoded({ extended: false }))
 
// parse application/json 
app.use(bodyParser.json())

// routes
app.get('/', function(req, res, next) {
    res.render('index');
});

app.post('/',  function(req, res, next) {

    console.log(req.body.title);
    console.log(req.body.description);
    
});


Клиент:
var $form = $('#upload_file_form');

$form.on('submit', function(e) {
    
    e.preventDefault();
    
    var data = $form.serialize();
    
    $.ajax({
        url: 'http://localhost:5000/',
        processData: false,
        contentType: false,
        type: 'POST',
        data: data,
        success: function() {
            console.log('Success upload');
        }
    });
    
});
  • Вопрос задан
  • 2405 просмотров
Решения вопроса 1
Fragster
@Fragster
помогло? отметь решением!
Это все CORS. Оно требует нескольких заголовков со стороны сервера:

app.use(function (req, res, next) {
	res.header("Access-Control-Allow-Origin", req.headers.origin);
	res.header('Access-Control-Allow-Credentials', 'true');
	res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
	next();
});


и на стороне клиента:
var ajaxSettings = {
			method: form.method,
			url: form.action,
			data: JSON.stringify(data),
			//					dataType: form.method === 'get' ? 'jsonp' : 'json',
			dataType: 'json',
			contentType: 'application/json',
			processData: false,
			xhrFields: {
				withCredentials: true
			}
		};
		var ajaxRequest = $.ajax(ajaxSettings);

spoiler
данный код является примерным


Ну, или можно фронт также той же нодой раздавать, тогда кроссдоменного запроса не будет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы