javascript - 如何修复浏览器端的 AJAX 请求无法将数据发送到本地服务器?
问题描述
我正在尝试使用 XMLHTTPServer 将数据发送到本地服务器。但是,我无法在服务器端接收它。
我尝试打印出通过的对象,但服务器收到的请求正文为空,即使我在使用后传递数据JSON.stringify(data)
。服务器使用传递的数据与托管在 AWS 上的 mongodb 对话。
浏览器端:
var cardID = 1233456789;
var data = JSON.stringify({ "Card ID": cardID });
console.log("data = " + data);
var url = `http://${serverIP}/findUser`;
var xhr = createCORSRequest("POST", url);
if (!xhr) {
alert("CORS not supported");
return;
}
xhr.onload = function() {
if (this.status == 200 && this.readyState == 4) {
userData = JSON.parse(this.responseText);
if (userData == "") {
console.log("ERROR LOADING USERS");
alert(
"USER NOT REGISTERED. Contact Michael Hofmann to Register yourself"
);
} else {
//window.location.replace('https://ha6017.github.io/link_table.html?cardid='+cardID);
console.log("userData=" + userData);
}
}
};
xhr.onerror = function() {
alert("Woops, there was an error making the request.");
};
console.log(xhr);
xhr.send(data);
服务器端:
app.post("/findUser", (req, res) => {
//console.log('req.body = ' + JSON.stringify(req.body));
var card_ID = req.body["Card ID"];
//console.log('finding user with card ID: ' + card_ID);
var que = {'Card ID': card_ID};
dbUtil.findExt("User_info", que, dbres => {
sendCORS(res, 200, dbres);
});
});
我希望来自浏览器的数据被传递到服务器端。请求正文可以card_ID
看到1233456789
req.body
解决方案
我无法复制您的代码,因为我不知道您的createCORSRequest()
方法在做什么。
我让它像这样工作。
测试.html
var cardID = 1233456789;
var data = JSON.stringify({ cardid: cardID });
console.log('data = ' + data);
var url = `http://localhost:3005/findUser`;
var xhr = new XMLHttpRequest();
xhr.onload = function() {
if (this.status == 200 && this.readyState==4) {
userData = JSON.parse(this.responseText);
if (userData == '') {
console.log('ERROR LOADING USERS');
alert('USER NOT REGISTERED. Contact Michael Hofmann to Register yourself');
} else {
//window.location.replace('https://ha6017.github.io/link_table.html?cardid='+cardID);
console.log('userData=' + userData);
}
}
};
xhr.onerror = function() {
alert('Woops, there was an error making the request.');
};
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/json");
console.log(xhr);
xhr.send(data);
服务器.js
var express = require('express');
var app = express();
var bodyParser = require('body-parser')
var cors = require('cors')
// use CORS
app.use(cors())
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({
extended: true
}));
// parse application/json
app.use(bodyParser.json())
app.post("/findUser", (req, res) => {
console.log('req.body = ' + JSON.stringify(req.body));
//console.log('finding user with card ID: ' + card_ID);
var que = { 'Card ID': card_ID };
/* dbUtil.findExt("User_info", que, dbres => {
sendCORS(res, 200, dbres);
});*/
});
app.listen(3005, function () {
console.log('Example app listening on port 3005!');
});
推荐阅读
- javascript - Javascript表单选择选项onchange删除最后一个样式
- python - 计算元素,然后删除重复项
- bash - 如何更频繁地轮询 asda 网站 (bash)
- gradle - 如何解决安装 warp10-ext-influxdb 插件时的 gradle shadowJar 问题?
- javascript - 只允许输入文本框中的数字
- python - Seaborn violinplot 中 HUE 参数的多列
- java - 线程“主”java.lang.UnsupportedClassVersionError 中的异常:
- javascript - React Hook useEffect 缺少对象的依赖项
- python - 我如何使用 python 文件从 localhost 上线???它不像其他普通的 html php 文件那样工作
- python - 只有 size-1 的数组可以转换为 Python 标量 python