Javascript 我正在尝试使用AJAX或req.body为NODEJS获取一个变量

Javascript 我正在尝试使用AJAX或req.body为NODEJS获取一个变量,javascript,node.js,ajax,Javascript,Node.js,Ajax,我想发送客户端javascript中的变量/值。我这样做的原因是因为我的req.body.domain返回时没有定义,当我尝试发送JSON时,我尝试将其发送到nodejs路由 客户端Ajax请求 function digIt() { var xhr = new XMLHttpRequest(); const domain = document.getElementById("digTool").value; const digToolInput = document.ge

我想发送客户端javascript中的变量/值。我这样做的原因是因为我的req.body.domain返回时没有定义,当我尝试发送JSON时,我尝试将其发送到nodejs路由

客户端Ajax请求

function digIt() {
    var xhr = new XMLHttpRequest();
    const domain = document.getElementById("digTool").value;
    const digToolInput = document.getElementById("digToolInput");
    digToolInput.innerHTML = domain;
    digToolInput.style.fontSize = "35px";
    const usMap = document.getElementById("us-map");
    usMap.classList.add("appear");
    digToolInput.classList.add("moved");

    console.log(domain);
    myJSON = { "domain" : domain  };
    console.log(JSON.stringify(myJSON));
    xhr.open('POST', '/tools', true);
    xhr.send(myJSON);
};
NodeJS用于接收AJAX请求的路由

router.post('/tools', (req, res, next) => {
    console.log(req.body.myJSON);
    mid.canYouDigIt(domain);
    res.render('tools', {test: 'domain'});
    next();

});
html/jade

doctype html
html(lang="en")
    head
        link(rel="stylesheet" type="text/css" href="./css/style.css")
        link(rel="stylesheet" type="text/css" href="./css/animation.css")
        link(href="https://fonts.googleapis.com/css?family=Cutive+Mono" rel="stylesheet")
        link(href="https://fonts.googleapis.com/css?family=Open+Sans+Condensed:300|Ubuntu" rel="stylesheet")


        title Nymadic #{title}


body

    section(id="container")

        section(id="navWrapper")

            img(id="logo" src="img/Nymadic_Logo_Edit_NEW.png" onclick="location='/'")

            <!----- Navigation Menu ----->
            div(id="navMenu")
                ul
                    li(onclick="location='/'") Home
                    li(onclick="location='/about'") About
                    li(onclick="wikiOpen()") Wiki
                    li(onclick="toolsOpen()") Tools
                    if !currentUser
                        li(onclick="location='/login'") Login
                    else
                        li(onclick="location='/profile'") #[img( id="navProfileLogo" src="/img/if_ninja_479478.png")] Profile
                            li(id="navLogout" onclick="location='/logout'") Logout



        <!----- Wiki Menu ----->
        section(id="sideBar")
            div
                img(id="logoSideBar" src="img/Nymadic_Logo_Edit_NEW.png" onclick="location='/'")
                form
                    input(id="searchBar" name="search" type="text" placeholder="Search for knowledge...")
                ul
                    li( v-for="page in mediaList" v-bind:name="page.title" v-on:click="toggleDetails(page)") {{ page.title }}
                        div( id="descriptionWrapper" v-bind:class="{less: page.showDetail}" )
                            p( ) {{ page.description }}
                            p(v-if="page.author" size="8" ) Created By: {{ page.author }}

        <!----- Tools Menu ----->
        section(id="digToolWrapper")
            form( id="digToolInput" )
                ul
                    li #[input(id="digTool" name="domain" type="text" placeholder="Can you dig it?")]#[input(id="whois" value="whois" type="button" onclick="digIt()")] 
doctype html
html(lang=“en”)
头
链接(rel=“stylesheet”type=“text/css”href=“./css/style.css”)
链接(rel=“stylesheet”type=“text/css”href=“./css/animation.css”)
链接(href=”https://fonts.googleapis.com/css?family=Cutive+Mono“rel=”样式表“)
链接(href=”https://fonts.googleapis.com/css?family=Open+Sans+浓缩版:300 | Ubuntu“rel=”stylesheet)
标题Nymadic#{title}
身体
节(id=“容器”)
节(id=“navWrapper”)
img(id=“logo”src=“img/Nymadic\u logo\u Edit\u NEW.png”onclick=“location=”/”)
div(id=“导航菜单”)
保险商实验室
li(onclick=“location=”/”)主页
li(onclick=“location=”/about')关于
li(onclick=“wikiOpen()”)Wiki
li(onclick=“toolsOpen()”)工具
如果!当前用户
li(onclick=“location=”/login')登录
其他的
li(onclick=“location=”/profile')#[img(id=“navProfileLogo”src=“/img/if_ninja_479478.png”)]profile
li(id=“navLogout”onclick=“location=”/logout')注销
节(id=“侧栏”)
div
img(id=“logoSideBar”src=“img/Nymadic\u Logo\u Edit\u NEW.png”onclick=“location=”/”)
形式
输入(id=“searchBar”name=“search”type=“text”placeholder=“搜索知识…”)
保险商实验室
li(v-for=“媒体列表中的页面”v-bind:name=“page.title”v-on:click=“切换详细信息(页面)”{{page.title}
div(id=“descriptionWrapper”v-bind:class=“{less:page.showDetail}”)
p(){{page.description}}
p(v-if=“page.author”size=“8”)创建人:{{page.author}
节(id=“digToolWrapper”)
表单(id=“digToolInput”)
保险商实验室
li#[输入(id=“digTool”name=“domain”type=“text”placeholder=“你能挖吗?”)]#[输入(id=“whois”value=“whois”type=“button”onclick=“digIt()”)

您已经打印了字符串化的JSON正文,但发送失败,请在发送时执行相同操作

在发送JSON数据时,您应该使用,
JSON.stringify(data)
,因此在您的情况下

xhr.send(JSON.stringify(myJSON))

如果可能的话,使用新的Web API,比如代替XHR


Fetch API有更多的优点,如前所述

您为express设置了body解析器中间件吗?是的,我有一个登录和注册页面,可以与mongodb一起工作,一切正常。