установите Content-Type на json, но запрос приходит как x-www-form-urlencoded - PullRequest
0 голосов
/ 05 мая 2018

Я использую ajax для отправки сообщения в мое приложение. В почтальоне все работает как положено, однако в браузере данные отображаются как x-www-form-urlencoded, а данные отсутствуют.

Ниже приведены мои настройки ajax и почтальона и соответствующие им заголовки в req ...

$.ajax({
        url: '/',
        headers: {
            'Accept': 'application/json',
            'Content-Type': "application/json"
        }, // send as JSON
        data: JSON.stringify(formData),
        method: 'POST'

    });


 headers:
      { host: 'localhost:8080',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0',
        accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'accept-language': 'en-US,en;q=0.5',
        'accept-encoding': 'gzip, deflate',
        referer: 'http://localhost:8080/',
        'content-type': 'application/x-www-form-urlencoded',
        'content-length': '0',
        connection: 'keep-alive',
        'upgrade-insecure-requests': '1',
        pragma: 'no-cache',
        'cache-control': 'no-cache' }

enter image description here

 headers:
      { data: '{"name":"tester", "email": "t@t.com", "message":"This is a test"}',
        contenttype: 'application/json',
        datatype: 'xml/html/script/json',
        'cache-control': 'no-cache',
        'postman-token': 'cbaa5cbe-0ab8-4328-abfd-f5dc6a6acd90',
        'user-agent': 'PostmanRuntime/7.1.1',
        accept: '*/*',
        host: 'localhost:8080',
        'accept-encoding': 'gzip, deflate',
        'content-length': '0',
        connection: 'keep-alive' }

также мой соответствующий код сервера:

app.use(bodyParser.json());
//handle urlencoded data
app.use(bodyParser.urlencoded({extended:false}));

app.post('/', function (req, res) {
    console.log(res);
    console.log('----------------------------------------------------------');
    console.log(req);
    //var jsonData = JSON.parse(req.headers.data);
    console.log(req.body);
    console.log(req.data);
    let transporter = courier.createTransport({...});
    let mailOptions = {...};
    transporter.sendMail(mailOptions, function (error, info) {
        if (error)
            console.log(error);
        else
            console.log('email sent:' + info.response);
    });
    res.render('index', {
        title: 'Projects',
        projects: projects
    });
});


app.get('/', function (req, res) {
    res.render('index', {
        title: 'Projects',
        projects: projects
    });
});

плз halp!

1 Ответ

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

Вы можете просто:
JSON.parse(data)
внутри вашего
success: function(data){
var object =JSON.parse(data);
}
Как только json проанализирует данные, вы сможете делать все, что захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...