设置客户端到服务器(和数据库)连接并更新客户端 html



我正在设置一个Web服务器,客户端将与它通信以从数据库中获取数据。

我在 localhost(1234 和 3306(上设置了服务器和数据库,我希望我的客户端接收数据并更新某个 DOM 元素

我知道这可能是一个 XY 问题,所以我会给出适当的上下文。这是我正在尝试构建的场景: 用户点击元素,元素在用户面前弹出(iframe(,所述iframe包含关于页面的基本html,其内容与点击的元素相应更新。假设用户点击了元素 cat,数据库中的元素 cat 在其表中是 id=3,id=3 就足以访问其目录中包含的 cat txt 和 jpg,然后这些将显示在 iframe 上。

内容更新是我在这里问的以及如何正确设置它,我对我可以做的事情没有任何限制,但我更喜欢用 javascript 进行(因为我已经理解了(

我已经在mariadb和sqlite上查找了一堆,并且都进行了设置,并一直试图让两者都做我想做的事,但无济于事。

这里给出的代码只是为了展示我尝试过的内容,我不知道这是否是我问题的正确解决方案:

this.server.on("request", (request, response) => {
if (request.url == "/build/app/description.html"){
mariadb.createConnection({host: '127.0.0.1', user: 'root', password: 'woopdidoo', database: 'baseddata', port: '3306', multipleStatements: true})
.then(conn => {
conn.query('SELECT type FROM expertise; SELECT type FROM expertise; SELECT type FROM expertise;')
.then (rows => {
for (var i = 0; i < (rows.length); i++){
console.log(rows[i]);
}
response.write('some html');
response.end();
conn.end();
})
.catch (err => {
console.log('Request error');
});
})
.catch(err => {
//handle error
console.log('Connection error');
});
}else{
return console.debug(`Received request ${request.method} ${request.url}`);
}
});

我尝试使用有效的 response.write 方法,但是: 1-它覆盖了我拥有的任何HTML(可以理解( 2-如果我再次发出相同的请求,它将失败,我的服务器将崩溃(在写入错误之前结束(

我的方法是否与我想要做的事情一致?如果没有,你会怎么做?

步骤1:创建端点

服务器端你必须做两件事。 - 创建新路线 - 编辑您将提供的HTML文件

您可以执行新的 GET 路由。

router.get('expertise/:id', function (req, res, next) {
let id = req.params.id;
});

使用:http://127.0.0.1/expertise/2 你得到 2 作为 id。

步骤2: 将 javascript 添加到您提供的 html 文件中。您可以将javascript添加到html文件内部或作为外部文件,您可以在其中链接到它。

这是我的第一篇文章,希望对您有所帮助。

所以,你的问题只是更新模态视图,如果用户点击预览? 我认为有多种方法。

阿贾克斯; 我更愿意在 DOM 上添加一个单击事件处理程序,该处理程序将被单击。 单击触发事件后,您可以向服务器执行 ajax 请求,服务器将应答。您可以使用 tha 参数 id 执行 get 请求,以便服务器知道他必须搜索哪个元素。

一种简单的方法,快速,肮脏且未经测试。它内部可能有错误或错别字,仅供参考。

$(document).ready(function () {
$('.object-class-which-gets-clicked').on('click', function (event) {
$.ajax({
url: "https://endpoint.ch/getInfo/"+id,
type: 'GET',
success: function(res) {
console.log(res);
appendToModal(res);
}
});
});
});

function appendToModal(res){
}

我希望它能解决你的问题,并给你一个想法,如何处理它。否则请回问。

此致敬意

最新更新