Запрос Ajax находится в состоянии ожидания с использованием NodeJS - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь сделать ajax-вызов нажатием кнопки ... Но вызовы не доходят до уровня узла.HTML-тег: Покажите мне последний мобильный

app.js:

function postDetails() {
    $.post('/api/users', {data: 'blah'}, function (data) {
        console.log(data);
      });
}

server.js

http.createServer(function(req, res) {
    if(req.url == '/') {
        fs.readFile("index.html", function(err, html) {
        res.end(html);
    });
    } else if(req.url.match("\.css$")) {
        var cssPath = path.join(__dirname, 'public', req.url);
        var fileStream = fs.createReadStream(cssPath, 'UTF-8');
        res.writeHead(200, {"Content-Type" : "text/css"});
        fileStream.pipe(res);
    } else if(req.url.match("\.js$")) {
        var cssPath = path.join(__dirname, 'public', req.url);
        var fileStream = fs.createReadStream(cssPath, 'UTF-8');
        res.writeHead(200, {"Content-Type" : "text/javascript"});
        fileStream.pipe(res);
    }

}).listen(8000);


app.post('/api/users', function(req, res) {
    console.log('KKKKKKKKKKuuuuuuuuuuuuuuKKKKKKK');
    router.post('/', function (req, res) {
      res.set('Content-Type', 'application/json');
      var jsonData = JSON.stringify(req.body);
      res.status(201);
      res.json();
    });
});

Ответы [ 3 ]

0 голосов
/ 06 октября 2018

Вы не используете Node / Express надлежащим образом.Если вы хотите отправлять запросы / ответы с использованием jQuery и Node.js, вы можете сделать это следующим образом:

var express = require('express');
var app = express();

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

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

app.use(express.static('public'));

app.get('/', function(req, res, next) {
  res.sendFile(__dirname + '/index.html');
});

app.post('/api/users', function (req, res, next) {
  res.json(req.body);
});

app.listen(3000, function() { console.log('App running'); });

Приведенный выше код представляет собой простой сервер node.js, работающий с Express.А под клиентской страницей index.html:

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

</head>
<body>
  <button id="clickme">click me</button>

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script>
    $('#clickme').on('click', function(e) {
      e.preventDefault();
      $.post('/api/users', {data: 'blah'}, function (result) {
        console.log(result);
      });
    });
  </script>
</body>
</html>

Эта страница index.html должна находиться в папке public.Вы можете обратиться к другому вопросу переполнения стека, чтобы получить более подробную информацию: здесь

0 голосов
/ 07 октября 2018

Я думаю, это потому, что вы создаете сервер и запросы прослушивания, используя http , и пытаетесь обработать маршруты, используя app (при условии, что объект Express).

Итаклибо вы должны написать код маршрутизации внутри функции обратного вызова http.createServer, например, -

http.createServer(function(req, res){
  if(req.url == '/api/users' req.method === 'POST'){
    //your code here
  }
});

, либо вы должны создать сервер, используя app (экспресс-способ)

0 голосов
/ 06 октября 2018

Попробуйте простой обработчик, чтобы проверить свои предположения:

console.log('BEGIN');
if (req.method === 'POST' && req.url == '/api/users') {
      console.log('SUCCESS');
    }
console.log('END');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...