我想把data ban收到的regions添加到下拉菜单中,但是我不太明白为什么他们不能正常处理请求,理论上showRegionsmain里面的函数应该有regions列表.js。
这是在我的 main.js 文件中
function showRegions(data) {
if (document.querySelector(".dropdown-menu")) {
console.log(data)
}
}
window.addEventListener('DOMContentLoaded', (event) => {
main()
});
getText = async function (url, callback) {
var request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyState == 4 && request.status == 200) {
console.log(request.responseText)
callback(request.responseText);
}
};
console.log("передал гет")
request.open("GET", url);
request.send();
}
function main(){
getText('/getAllRegions', showRegions);
}
然后逻辑上我必须处理这个请求
我在 app.js 中处理
var createError = require('http-errors');
var express = require('express');
const bodyParser = require('body-parser');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
const db_funcs = require("./db/db_func.js")
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', (req, res, next)=>{
console.log("рендерим индекс")
res.render("index")
})
app.get('/getAllRegions', (req, res, next)=>{
console.log("гет запрос пришел")
let result = db_funcs.getRegions()
console.log(result)
// res.send(data)
})
以及数据库查询所在的 db_funcs.js 文件本身:
async function getRegions() {
const response = new Promise((resolve, reject) => {
const query = "SELECT stops.zone_name FROM stops GROUP BY zone_name;"
connection.query(query, (err, results) => {
if(err) reject(new Error(err.message));
// console.log(results)
resolve(results);
// return results;
});
return response
})
};
更新 1.0
问题是什么?
问题出在方法
getRegions上。由于创建Promise的数据没有从函数返回,因此不会返回其中的数据。如果您删除请求,则代码如下所示:
你可以像这样修复它
db_funcs.js:
应用程序.js: