为了账号安全,请及时绑定邮箱和手机立即绑定

使用javascript插入MySQL数据库

使用javascript插入MySQL数据库

PHP
GCT1015 2023-03-11 15:50:11
我目前正在做一个学校项目,我需要一些帮助。我在尝试将从另一个 IP 地址(使用 AJAX)读取的数据放入 MySQL 数据库时遇到了问题。我尝试使用 node.js,但是因为当我在网页上按下按钮时我正在调用该函数,所以它不起作用......所以关于如何使 node.js 工作的任何建议或提示。阿贾克斯功能:function AddShoots() {  $.ajax({    method: "POST",    dataType: "json",    url: "http://192.168.1.8",    success: function (html) {      for ($i = 0; $i < html.length; $i++) {        console.log(html[$i]);      }    },  });}我得到并想插入数据库的数据:
查看完整描述

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(/* ... */)

在高层次上,这就是我相信你正在努力实现的目标:

//img1.sycdn.imooc.com//640c32f80001758906590234.jpg

所以基本上你的应用应该至少有两个文件:

  1. index.html这将包含您的按钮以及从您的 Pi 获取数据的 JS 代码。这个“前端”JS 还必须向您的 Node 应用程序发送 AJAX 请求。

  2. 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

        })

      });

    },

  });

}

这里违反了大量“最佳实践”,但出于学校作业的目的,这应该让你指出正确的方向。


查看完整回答
反对 回复 2023-03-11
  • 1 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信