【问题标题】:Ajax Node JS POST/GET request works but doesn't send dataAjax Node JS POST/GET 请求有效但不发送数据
【发布时间】:2022-02-03 02:09:54
【问题描述】:

尝试向快递服务器发送 post 请求,除了接收数据外,一切正常,我尝试使用 postman 和 Insomnia 进行测试,包括数据在内的一切正常 - 我的代码工作但没有发送数据 -。没有收到数据主体可能是什么潜在问题?

快递服务器:

app.post('/ajax', function (req, res){
   console.log(req.body);
   console.log('req received');
});

Ajax (Jquery):

var jsonData = JSON.stringify({ "serviceCategory": 4, "availDate": 2 });
            $.ajax({
                url: "/ajax",
                type: 'POST',
                headers: {
                    'content-type': 'text/html; charset=utf-8',
                    'Access-Control-Allow-Origin': '*',
                },
                data: {
                    "Name": "John"
                },
                success: function (res) {
                    console.log(res);
                },
                error: function (jqXhr, textStatus, errorMessage) {
                    console.log(errorMessage)
                }
            });

我尝试了很多东西(Stringify,我删除了 urlencodedparser,添加了删除标头),我添加或删除的所有内容都适用于 Insomnia,但不适用于我的代码。

【问题讨论】:

  • 您可以尝试在“数据”属性之后添加数据类型:'json'、缓存:false、属性吗?或者删除“标题”对象
  • 我试过这个数据类型是你从服务器收到的,它只是文本
  • 显示你是如何设置“urlencodedparser”的,意思是使用“body-parser”

标签: jquery node.js ajax express


【解决方案1】:

我相信,你需要做些改变。

  1. 使用JSON.parse()方法将json字符串转换为json对象,并将该json对象设置为ajax调用的data属性。
$.ajax({
    url: "/ajax",
    type: 'POST',
    headers: {
        'content-type': 'text/html; charset=utf-8',
        'Access-Control-Allow-Origin': '*',
    },
    data: JSON.parse('{ "serviceCategory": 4, "availDate": 2 }'),
    success: function (res) {
        console.log(res);
    },
    error: function (jqXhr, textStatus, errorMessage) {
        console.log(errorMessage)
    }
});
  1. 根据您的 express 版本,使用 express.json()bodyParser.json() 从 express 请求中提取 json 数据。

var express = require('express'); bodyParser = require('body-parser');

var app = express();

app.use(bodyParser.json());

app.post('/', function(request, response){
  console.log(request.body);      // your JSON
   response.send(request.body);    // echo the result back
});

app.listen(3000);

【讨论】:

  • 为什么要把对象写成对象字面量,加上引号,然后解析成 JSON?只需从他们的原始代码中删除JSON.stringify(),他们就有了一个对象。
  • 没有任何工作:(
  • 能否请您添加有问题的错误信息?
猜你喜欢
  • 2011-05-22
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多