【发布时间】:2019-03-21 05:28:51
【问题描述】:
如何在 javascript 中将表单输入从客户端传递到服务器?下面是客户端。我想获取一个用户名或在文本框中输入的任何内容,并将其发送到 server.js,在那里将对其进行处理以进行验证。问题是我需要将来自 client.js 的数据存储在 server.js 的一个变量中,以便能够检索它。
var textbox;
var dataDiv;
window.onload = init;
function init(){
textbox = document.createElement("input");
textbox.id="textbox";
dataDiv = document.createElement("div");
var header = document.createElement("h1");
header.appendChild(document.createTextNode("Select User"));
var button = document.createElement("BUTTON");
button.id = "myBtn";
var textBtn = document.createTextNode("Click me");
button.appendChild(textBtn);
button.addEventListener("click", () => {
sendData();
});
var docBody = document.getElementsByTagName("body")[0];//Only one body
docBody.appendChild(header);
docBody.appendChild(dataDiv);
docBody.appendChild(textbox);
docBody.appendChild(button);
}
function sendData(){
var usrName = document.getElementById("textbox").value; //I want to send it to server.js
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var dataObj = JSON.stringify(this.responseText);
dataDiv.innerHTML = dataObj;
}
};
xhttp.open("GET", "/register", true);
xhttp.send();
}
这是服务器端
var express = require('express');
var app = express();
app.get('/register', handleGetRequest); //how do I pass usrName here?
app.use(express.static('public'));
app.listen(5000);
function handleGetRequest(request, response){
var pathArray = request.url.split("/");
var pathEnd = pathArray[pathArray.length - 1];
if(pathEnd === 'register'){
response.send("{working}");
}
else
response.send("{error: 'Path not recognized'}");
}
【问题讨论】:
-
如何使用 HandleGetRequest 提取客户端发送的数据?
-
\register应该是/register -
/register 应该是localhost:5000/register。 Express (API) 在不同的 (5000) 端口上运行,因此您遇到 404 错误。
-
@isidat 我收到此错误 Uncaught TypeError: Cannot set property 'innerHTML' of null at XMLHttpRequest.xhttp.onreadystatechange (client.js:29)
-
@isidat 想知道一些事情。我唯一的目标是将数据传输到服务器端。我可以使用 cookie 吗?
标签: node.js ajax post get xmlhttprequest