it-swarm.com.de

Wie mache ich eine Ajax Get/Post Anfrage im Express Server?

Unten ist mein Express-Server. Ich versuche, eine Get-Anfrage in Ajax zu stellen, aber es stellte sich heraus, dass dies fehlgeschlagen ist, obwohl ich zu Beginn eine Abfrage benötigte. $ Ist nicht definiert. Was kann ich außer der Verwendung von jquery ajax noch verwenden, um einen API-Aufruf für eine RESTful-API-URL zu erstellen?

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

HTTP GET-Anforderung in 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

Sie müssen Dinge verstehen wie: 

  1. expressjs ist serverseitiger Code, daher kann jquery ajax nicht so verwendet werden.
  2. jQuery.ajax() kann nur verwendet werden, wenn Sie Ihre Seite im Browser laden.

Sie müssen einige View-Engines wie jade verwenden, um Vorlagen zu erstellen und Router zu verwenden, um die Ansicht im Browser zu verschieben. Wenn Sie Ihre Ansicht im Browser haben, können Sie einen Verweis auf die Skriptdatei erstellen, die Ihren Ajax-Code enthalten kann, um Beiträge und Kommentare zu erhalten. 

Mehr Informationen.

1
Jai

Update @ Jemand, das Express-Framework ist sehr beliebt, um einen Webserver in Node einzurichten. Sie können verschiedene Render-Engines verwenden, um die Ansicht zu rendern und Informationen an den Benutzer zu übergeben. Dies ist ein sehr einfaches Beispiel von der Express-Website, das zwei URLs (/ posts und/comments) hört. 

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

Versuchen Sie etwas so:

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.
    });
 };

Bitte auch beachten. Sie werden dies von einer externen JavaScript-Datei aus aufrufen. Auf dem Express-Server haben Sie nur "Routen", und von externen Javascript-Dateien können Sie HTTP-Aufrufe auf diesen Routen ausführen.

0
Skywalker