1 回答
TA贡献1806条经验 获得超8个赞
听起来你有点混淆了你的技术。
让我们先澄清几个术语:
节点JS
是用于服务器端或后端代码的JavaScript运行时。
运行
代码执行的环境,如NodeJS或 Web 浏览器。
服务器端
这是指在服务器上运行的代码。可以是 PHP、Java、Python 等……如果您使用的是 Node,甚至可以是 JavaScript。
后端
当人们说“后端”时,通常与“服务器端”的意思相同。
前端
在此上下文中,“前端”是指在 Web 浏览器中执行的代码。
阿贾克斯
一种 HTTP 请求样式,浏览器可以使用它来发送和获取数据而无需重新加载当前页面。
既然我们已经解决了这个问题......
Node 是 JavaScript 的服务器端运行时,因此在浏览器中运行的 JS 代码无法直接与 Node 代码通信。
如果你想点击浏览器中的一个按钮并看到数据被写入你的数据库,你必须对你的后端正在监听的 url 进行 AJAX 调用(称为端点或路由)。
从你的例子中解释你的意图有点困难,但我认为你的意思是发送一个 POST 到http://192.168.1.8
. 因此,您需要在 Node 应用程序中配置一个可以处理 AJAX 请求的路由,然后您可以从那里将数据写入数据库。
当然,您还需要随请求传递数据。它与您的调用中的选项参数一起传递$.ajax(/* ... */)
。
在高层次上,这就是我相信你正在努力实现的目标:
所以基本上你的应用应该至少有两个文件:
index.html
这将包含您的按钮以及从您的 Pi 获取数据的 JS 代码。这个“前端”JS 还必须向您的 Node 应用程序发送 AJAX 请求。app.js
这将是您的 Node 应用程序。它必须公开一个端点,您的前端代码可以将数据发送到该端点。在该端点的函数内,您将负责将数据写入数据库。
有一个名为 Express 的库可以帮助您创建端点。我建议遵循他们的入门指南:https ://expressjs.com/en/starter/installing.html
更新
我看到你用图表更新了你的答案。我假设您的心智模型可能正是那样,这就是您遇到困难的原因。
例如,当用户访问诸如https://stackoverflow.com之类的 url 时,请求不会转到 Web 浏览器。请求必须首先通过服务器。当你使用 Node 时,你的应用本质上就是服务器,负责返回正确的响应。
在您的情况下,响应将是一个 HTML 文件,index.html
例如。
那index.html
就是网页,它将包含您的“前端”JavaScript 代码,它可以通过 HTTP 与您的 Raspberry Pi 服务器通信以获取您正在谈论的图像数据。
在浏览器中运行的 JavaScript 无法直接与 SQL 数据库通信。所以你必须通过网络向你的节点服务发送请求。在您的后端应用程序中,您可以借助从 NPM 获得的包将数据写入 MySQL 数据库。这是一个例子: https: //www.npmjs.com/package/mysql
更新 2
听起来您更喜欢使用 PHP。您可以将 NodeJS 换成 PHP,而我的图表仍将代表您希望在较高层次上实现的目标。关键区别在于您不必弄清楚如何设置“路线”。
使用 PHP,您可以只拥有一个名为以下内容的文件SaveMyData.php
:
<?php
// Get the body of the POST request
$data = file_get_contents('php://input');
// Decode the JSON string so you can work with it in PHP
$decodedData = json_decode($data);
// $decodedData is now an array of the data you sent from the browser
foreach($decodedData as $row) {
// write the row to your database here
}
然后“端点”(对您如何为您的应用程序提供服务做出一些假设)是公正的,http://localhost:8080/SaveMyData.php它成为您从浏览器传递给 AJAX 调用的 URL。
您的 AJAX 请求类似于:
function AddShoots() {
$.ajax({
method: "POST", // the post to your Pi I'm assuming?
dataType: "json",
url: "http://192.168.1.8",
success: function (data) {
$.ajax({
method: "POST", // this is going out to your PHP backend
dataType: "json",
url: "http://localhost:8080/SaveMyData.php",
data: data,
success: function (response) {
// do stuff with the response if you'd like
})
});
},
});
}
这里违反了大量“最佳实践”,但出于学校作业的目的,这应该让你指出正确的方向。
- 1 回答
- 0 关注
- 175 浏览
添加回答
举报