web-dev-qa-db-fra.com

Comment faire une requête ajax get/post dans un serveur express?

Ci-dessous se trouve mon serveur express. J'essaie de faire une demande get en ajax, mais il s'est avéré avoir échoué, même si j'avais besoin de jQuery au début. Il est indiqué que $ n’est pas défini. À part l’utilisation de jquery ajax, que puis-je utiliser pour créer un formulaire d’appel d’API url API?

var express = require('express');
var requestHandler = require('./requestHandler');
var app = express();
var path = require('path');


app.use(express.static(path.join(__dirname, '../client')));
app.get('/homepage', requestHandler.getData);

var port = process.env.PORT || 3000;
app.listen(port);
console.log("Server running at: http://localhost:" + port);

// request handler file:

var express = require('express');
var url = "http://jsonplaceholder.typicode.com/";

module.exports.getData = function (req, res){
    $.ajax({
      method: 'GET',
      url: url+'posts',
      success: function(data) {
        console.log(data);
        res.send(data);
      }
    });
  }
module.exports.getComments = function(userId){
    $.ajax({
      method: 'GET',
      url: url+'/comments',
      success: function(data) {
        console.log(data);
      }
    });
}
6
Someone

Requête HTTP GET dans Node.js Express

var http = require('http');
var options = {
  Host: 'www.google.com',
  path: '/index.html'
};

var req = http.get(options, function(res) {
  console.log('STATUS: ' + res.statusCode);
  console.log('HEADERS: ' + JSON.stringify(res.headers));

  // Buffer the body entirely for processing as a whole.
  var bodyChunks = [];
  res.on('data', function(chunk) {
    // You can process streamed parts here...
    bodyChunks.Push(chunk);
  }).on('end', function() {
    var body = Buffer.concat(bodyChunks);
    console.log('BODY: ' + body);
    // ...and/or process the entire body here.
  })
});

req.on('error', function(e) {
  console.log('ERROR: ' + e.message);
});

9
Enkode

Vous devez comprendre des choses comme: 

  1. expressjs est un code côté serveur, donc il ne peut pas utiliser jquery ajax comme ça.
  2. jQuery.ajax() ne peut être utilisé que lorsque vous chargez votre page dans le navigateur.

Vous devez utiliser des moteurs de vue tels que jade pour créer des modèles et utiliser des routeurs pour afficher la vue dans le navigateur. Lorsque vous avez votre vue dans le navigateur, vous pouvez faire référence au fichier de script qui peut contenir votre code ajax pour vous permettre d’avoir des publications et des commentaires. 

Plus d'information.

1
Jai

Mise à jour @ Quelqu'un, le framework express est très populaire pour configurer un serveur Web dans Node. Vous pouvez utiliser différents moteurs de rendu pour rendre la vue et transmettre des informations à l'utilisateur. Voici un exemple très simple tiré du site Web Express, qui écoute deux URL (/ posts et/comments). 

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

app.get('/posts', function (req, res) {
  res.send('Render posts!');
});

app.get('/comments', function (req, res) {
  res.send('Render comments');
});

var server = app.listen(3000, function () {
  var Host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', Host, port);
});
0
Evers

Essayez quelque chose comme ça:

function() {


    // Simple POST request example (passing data) :
    $http.post("/createProject/"+ id +"", {
        projectTitle: pTitle,
        userID      : id
    }).
    success(function(data, status, headers, config) {
        // this callback will be called asynchronously
        // when the response is available
        $scope.getProjects();
        console.log("project created");
        console.log("this is the response data " + data);
    }).
    error(function(data, status, headers, config) {
        // called asynchronously if an error occurs
        // or server returns response with an error status.
    });
 };

Aussi s'il vous plaît note. vous appellerez cela depuis un fichier JavaScript externe. Sur le serveur express, vous ne disposez que de "routes" et à partir de fichiers javascript externes, vous pouvez effectuer des appels HTTP sur ces routes.

0
Skywalker