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
})
});
},
});
}
這里違反了大量“最佳實踐”,但出于學校作業的目的,這應該讓你指出正確的方向。
添加回答
舉報