Javascript 如何使用ajax和express.js发送和接收字符串?

Javascript 如何使用ajax和express.js发送和接收字符串?,javascript,ajax,node.js,express,Javascript,Ajax,Node.js,Express,我需要向服务器上的函数发送一个字符串。然后在服务器功能完成后向客户端发送一个字符串 克莱因 $.ajax({ type: 'POST', url: 'http://localhost:1337/text', data: { q:document.getElementById("text").value}, success: function (response) { }, error: function () { } }); 服务器

我需要向服务器上的函数发送一个字符串。然后在服务器功能完成后向客户端发送一个字符串

克莱因

$.ajax({
    type: 'POST',
    url: 'http://localhost:1337/text',
    data: { q:document.getElementById("text").value},
    success: function (response) {

    },
    error: function () {

    }
});
服务器

 app.post('/text', function(req, res) {
   console.log(data.q);
 });
 app.listen(1337);
这将在客户端上返回此错误

XMLHttpRequest cannot load http://localhost:1337/text. No Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 404.

为什么不将文本记录到终端,如何将字符串发送回success函数?

您必须在服务器文件中使用带有Express的bodyParser模块

npm install body-parser
bodyParser对象公开各种工厂来创建中间件。所有中间件都将使用解析的主体填充req.body属性,或向回调提供错误。 包含解析数据的新主体对象填充在中间件之后的请求对象上(即req.body)

在服务器文件上,按如下方式更改代码:

  var bodyParser=require('body-parser');
  var app=require('express');
  app.use(bodyParser());
  app.use(bodyParser.urlencoded({
  extended: true
  }));      
  app.use(bodyParser.json());
  app.post('/text', function(req, res) {
  console.log(req.body.q);
  });
  app.listen(1337);
在客户端文件上,将数据类型JSON添加到ajax请求中,并将url更改为“/text”

$.ajax({
type: 'POST',
url: '/text',
dataType: "json",
data: { q:document.getElementById("text").value},
success: function (response) {

},
error: function () {
}
});

谷歌关于访问控制。你的客户不在同一个网站上运行,是吗?您需要为这种情况设置正确的响应标题。@user2415266我正在使用一个节点脚本和一个在chrome中打开的html文件来运行它。这将不会在任何生产中使用。如果我不尝试记录数据,则不会发生错误。问:本质上,问题是您试图从位于不同域的服务器检索数据,例如,您的网站需要位于它试图从中检索数据的同一服务器上,或者它抛出您看到的错误。
body parser不推荐使用bodyParser:use individual json/urlencoded middleware app.js:11:11
因此它返回一个错误
app.use(bodyParser())我明白了,我已经编辑了我的答案,请你现在检查一下好吗