2016-10-18 2 views
0

У меня есть основной Экспресс API:Экспресс - Не делают POST ответ

app.get('/example', function(req, res) { 
    if (req.body.messageid == 1) { 
    res.send({message: "Message"}); 
    } 
} 

Все это делает возвращается сообщение, которое затем должно быть отображено на HTML-странице.

Для того, чтобы отобразить сообщение, я реализовал эту АЯКС вызов с JQuery:

$('#view-message').on('click', function() { 
    $.ajax({ 
    type: "POST", 
    url: "/example", 
    data: { messageid: 1}, 
    contentType: "text/json; charset=utf-8", 
    dataType: "text", 
    success: function (msg) { 
     $('#content').text(msg); 
    }, 
    error: function (err) { 
     console.log(err); 
    } 
    }); 
}); 

вместо отображения сообщения, он просто делает новую страницу с содержанием {message: "Message"}, а не просто выводит сообщение в существующая страница.

Как это сделать, чтобы не сделать результат?

+2

вы делаете запрос POST, но экспресс-маршрут только показывает запрос "GET" , также если вы возвращаете Json, вы должны использовать res.json (...) вместо send() – StackOverMySoul

+0

@Davidlrnt правильно, внести эти изменения, и он должен работать. Также убедитесь, что вы используете POST через body-parser (особенно это модуль json parser module). – schad

ответ

1

поставил index.html в public

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <meta charset="utf-8"> 
</head> 
<body> 

    <div id="content"></div> 

    <script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 

    <script> 
    $.ajax 
    ({ 
     type: "POST", 
     url: "http://localhost:8080/example", 
     data: { messageid: 1}, 
     dataType: "json", 
     cache : false, 
     success: function (data) { 
      $('#content').text(data.message); 
     }, 
     error: function (err) { 
      console.log(err); 
     } 
    }); 
    </script> 
</body> 
</html> 

и index.js

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

var app = express(); 

app.use(express.static(path.join(__dirname, 'public'))); 

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

app.post('/example', function(req, res) { 
    if (req.body.messageid == 1) { 
    res.send({message: "Message"}); 
    } 
}); 

app.listen(8080); 

работает

+0

Это действительно работает, спасибо. Кроме того, важный параметр кеша. –

+0

Да, не обязательно, но вы должны использовать его, когда вам нужны свежие данные. – asissuthar

Смежные вопросы