Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jquery发布并从Node.js接收响应_Jquery_Node.js_Ajax - Fatal编程技术网

使用Jquery发布并从Node.js接收响应

使用Jquery发布并从Node.js接收响应,jquery,node.js,ajax,Jquery,Node.js,Ajax,我正在尝试做一件非常简单的事情,我想用AJAX Jquery发布到Node.js服务器,并让服务器返回响应。我的问题是我无法从服务器上得到答案。如果有人能帮助我,我将非常感激 client.js $(document).ready(function(){ $("button").click(function(){ $.post("http://localhost:3333/vrp", { name: "Donald Duck", city: "Duckbu

我正在尝试做一件非常简单的事情,我想用AJAX Jquery发布到Node.js服务器,并让服务器返回响应。我的问题是我无法从服务器上得到答案。如果有人能帮助我,我将非常感激

client.js

$(document).ready(function(){
$("button").click(function(){
    $.post("http://localhost:3333/vrp",
    {
      name: "Donald Duck",
      city: "Duckburg"
    },
    function(data,status){
        alert("Data: " + data + "\nStatus: " + status); //This section code doesn't execute.
    })
    .fail(function() {
       alert( "error" );       //It's executed this section of code and I can see it in my browser.
    });
});
});
server.js

var vrp = require("./vrp");
var bodyParser = require("body-parser");
var express = require('express');
var app = express();

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

app.post('/vrp', function(req, res){
  console.log(JSON.stringify(req.body));   //Here I can see the message I sent.
  res.contentType('json');
  res.send(JSON.stringify(req.body));
});

var listener = app.listen(3333, function () {
  console.log('Your app is listening on port ' + 
  listener.address().port);
});

在server.js中尝试添加CORS头,例如

app.post('/vrp', function(req, res){
  console.log(JSON.stringify(req.body));
  res.header("Access-Control-Allow-Origin", "*").send(req.body);
});
如果这次运行,那么您100%确定这是CORS的问题。 对于真正的应用程序,您可以使用此解决方案或更复杂的中间件,例如

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

或者您可以使用配置更灵活的cors中间件模块。

您会收到什么错误消息-请检查您的浏览器开发工具?这可能是一个与CORS相关的问题……您是否尝试过
contentType('jsonp')
?您可能不需要这个:
res.contentType('json');res.send(JSON.stringify(req.body))它<代码>资源发送(请求正文)
应该足够了我要尝试@Oliver告诉我的解决方案,其他人的解决方案不起作用(我想可能是配置问题)。如何查看响应的错误消息?对不起,我是这方面的初学者,我没有太多的想法。看看我的答案,它有一些随时可以测试/随时可以使用的代码。是的!!成功了!非常感谢!我必须了解它,亲爱的!
app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});