我配置了一些路线:
var express = require('express');
var router = express.Router();
router.post('/isAccessible/:orgaId', function(req, res, next) {
res.send("------ param = "+orgaId);
});
module.exports = router;
然后在ejs文件中:
<script>
function isOrganisationAccessible(orgaId) {
$.ajax({
url: "/organisation/isAccessible/"+orgaId,
type: "POST",
dataType: "text",
success : function(data, status, xhr) {
return data;
},
error : function(xhr, status, error) {
return "";
}
});
}
$(document).ready(function() {
alert("test = "+isOrganisationAccessible("xxx"));
});
</script>
在运行时,我得到undefined
!那么如何获取传递给路由的参数呢?
答案 0 :(得分:1)
您不能直接访问orgaId
。您需要像这样访问它:
req.params.orgaId
更新: 我测试了这个简单的应用,在/ isAccessible / abc上运行正常 我用get查询测试了,但是用post也测试了。另外,为什么在不发送任何数据时使用post?
const express = require('express');
let app = express();
// Function to handle the root path
app.get('/isAccessible/:orgaId', function(req, res, next) {
res.send("------ param = "+req.params.orgaId);
});
let server = app.listen(3000, function() {
console.log('Server is listening on port 3000')
});
答案 1 :(得分:1)
您似乎遇到的问题是isOrganisationAccessible
是异步的。
从success
函数返回的数据没有得到您期望的结果
因为数据不是从isOrganisationAccessible
返回,而是仅从success
返回
功能。 isOrganisationAccessible
将始终返回undefined
。
您可以通过承诺来解决此问题:
function isOrganisationAccessible(orgaId) {
return new Promise((resolve, reject) => {
$.ajax({
url: "/organisation/isAccessible/"+orgaId,
type: "POST",
dataType: "text",
success : function(data, status, xhr) {
resolve(data);
},
error : function(xhr, status, error) {
reject(error);
}
});
})
}
然后解决诺言以检查结果:
$(document).ready(function() {
isOrganisationAccessible("xxx").then((data) => {
alert(data)
})
})