【问题标题】:Ajax - GET method doesn't send paramsAjax - GET 方法不发送参数
【发布时间】:2018-07-18 00:52:15
【问题描述】:

这是我的要求:

var xhttp = new XMLHttpRequest();
xhttp.open("GET", "/api/registerRequest?user=user", true);
xhttp.send();

这是正在处理的请求:

var express = require("express");
var router = express.Router();

router.get("/registerRequest/:user", function(req, res, next){
    console.log("response for param");
    console.log(req.params.user);
});

router.get("/registerRequest", function(req, res, next){
    console.log("normal response");
    console.log();
});

这是应用程序:

var express = require("express");
var app = express();
app.use("/api", index);

请注意,这些只是很小的,与问题相关的代码部分。

现在,控制台中的输出是

正常反应

但根据我的理解,应该是:

响应参数

用户

【问题讨论】:

    标签: javascript node.js ajax get routes


    【解决方案1】:

    你误解了路由。

    router.get("/registerRequest/:user" 匹配 /registerRequest/... 形式的 URL,其中 ... 变为 req.params.user

    你没有创建这样的 URL。

    【讨论】:

    • 那么解决方案是什么?我应该改变什么以获得所需的输出
    • 检查预期参数是否存在?
    • @PeterVC 你在上面回答了我的问题吗?
    • @Emyeminescu:要么让你的 URL 与你的路由匹配,要么将你的代码移动到与 URL 匹配的路由。
    【解决方案2】:

    在网址/api/registerRequest?user=user 中,您将用户作为查询参数发送。这将允许您从req.query.user 访问它。 more here

    为了从req.params.user 访问它,您需要将ajax 请求中的url 更改为/api/registerRequest/userdoc reference

    【讨论】:

    • 如果我选择将 url 更改为:'/api/registerRequest/user',如何发送更多参数?
    • 在你的路由中,你需要指定参数api/registerRequest/:user/:another。虽然如果您打算设置超过 2 个属性,则执行 POST 请求可能会更简单
    猜你喜欢
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2015-09-07
    • 1970-01-01
    相关资源
    最近更新 更多