Nodejs - 使用ajax将数据发送到服务器

时间:2017-02-10 19:24:24

标签: javascript ajax node.js

我尝试将值发送到我的服务器,但是如果我尝试,我的控制台会向我显示错误:

Cannot POST /

我尝试查看其他示例,并尝试使用此代码:

我的 index.html

function sendData() {
  var latestResponse = Api.getResponsePayload();
  var context = latestResponse.context;
  var mail = context.email; // I can see the data of these variables perfectly on the console


 $.ajax({
  type: "POST",
  url: "http://localhost:3000/",
  crossDomain:true, 
  dataType: "json",
  data:JSON.stringify({email: mail})
 }).done(function ( data ) {
      alert("ajax callback response:"+JSON.stringify(data));
   })
}

我的 server.js

'use strict';

var server = require('./app');
var port = process.env.PORT || process.env.VCAP_APP_PORT || 3000;

server.on('request', request);

server.listen(port, function() {
  console.log('Server on port: %d', port);
});

function request(request, response) {
    var store = '';

    request.on('data', function(data) 
    {
        store += data;
    });
    request.on('end', function() 
    {  console.log(store);
        response.setHeader("Content-Type", "text/json");
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.end(store)
    });
 }  

我的存储库:

FolderRepository
    public
     - js folder
     - img folder
     - css folder
     - index.ejs
    server.js
    app.js

1 个答案:

答案 0 :(得分:1)

因为您的服务器正在另一个端口上运行。这是你的端口

var port = process.env.PORT || process.env.VCAP_APP_PORT || 3000;

在ajax请求中,您需要发布到网址http://localhost: + your port

每次收到请求时,您的请求都会在data事件中附加一个新的事件处理程序,因此在10个附加事件之后,您将收到有关内存泄漏的警告消息。

此代码有效。主要区别在于我拨打http.createServer()并从app.js获取。查看app.js并查看是否适当地创建了服务器。

尝试查看您的服务器是否已正确创建。

var http = require('http');
var port = 3000;

var proxy = http.createServer();

proxy.listen(port);

proxy.on('request', request);

function request(request, response) {
    var store = '';

    request.on('data', function (data) {
        store += data;
    });
    request.on('end', function () {
        console.log(store);
        response.setHeader("Content-Type", "text/json");
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.end(store)
    });
}