【问题标题】:Inserting into MySQL database with javascript [closed]使用javascript插入MySQL数据库[关闭]
【发布时间】:2020-08-28 22:47:16
【问题描述】:

我目前正在做一个学校项目,我需要一些帮助。我在尝试将从另一个 IP 地址(使用 AJAX)读取的数据放入 MySQL 数据库时遇到问题。我尝试使用 node.js,但是因为我在按下网页上的按钮时调用了该函数,所以它不起作用......所以关于如何使 node.js 工作的任何建议或提示。

ajax 函数:

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]);
      }
    },
  });
}

我得到并想插入数据库的数据:

编辑:补充说明

抱歉,HTML/CSS 复制时出错。为了澄清我的端点,我有一个在树莓派上编写的 python 图像识别程序,IP 上的树莓派服务器返回图片中看到的数字,我想将数字插入 MySQL 数据库,我需要帮助这样做是因为我之前只使用 PHP 将数据插入到表中,但在这种情况下我不能这样做,因为我使用的是 AJAX(至少据我所知不是)我希望这能更好地解释一切。

另一个编辑:

一张可能有助于理解的图片(我非常不擅长解释抱歉英语不是我的主要语言,这就是为什么我表达不好并且很难解释一些东西)。

【问题讨论】:

  • 您是否尝试直接发布到您的 MySQL 服务器?目前尚不清楚该端点是什么。 CSS 和 HTML 也完全不相关,为了清楚起见应该省略,尽管值得注意的是您的 &lt;div&gt; 已损坏,您可以看到语法突出显示如何将其标识为损坏,因为它应该以 50%"&gt; 结尾不是50%/"
  • CSS 注释:positon position。
  • 如果我的回答没有帮助,那么这里的礼仪很好,可以在否决之前解释原因。它可以帮助我给你一个更好的答案。
  • 感谢您的反馈!我会看看能否解决这些问题。
  • @DanFletcher 欢迎丹。关于回复 ping 的(对你的)评论的旁注。请使用我为您所做的,使用@username 方法。我只看到您的评论,因为我正在“关注”这个问题并收到了通知。如果我没有,那么我就不会看到它。 干杯。哦,我现在不会太担心了。

标签: javascript php html mysql ajax


【解决方案1】:

听起来你的技术有点混乱。

让我们先澄清几个术语:

NodeJS

服务器端后端 代码的 JavaScript runtime

运行时

代码执行环境,如 NodeJS 或网络浏览器。

服务器端

这是指在服务器上运行的代码。可以是 PHP、Java、Python 等……如果您使用的是 Node,甚至可以是 JavaScript。

后端

当人们说“后端”时,通常与“服务器端”的意思相同。

前端

在此上下文中,“前端”指的是在网络浏览器中执行的代码。

AJAX

浏览器可以用来发送和获取数据而无需重新加载当前页面的 HTTP 请求样式。

现在我们已经解决了这个问题......

Node 是 JavaScript 的服务器端运行时,因此您在浏览器中运行的 JS 代码无法直接与您的 Node 代码对话。

如果您想单击浏览器中的按钮并查看数据写入数据库,您必须对后端正在侦听的 URL(称为端点或路由)进行 AJAX 调用。

从您的示例中解释您的意图有点困难,但我认为您的意思是向http://192.168.1.8 发送 POST。因此,您需要在 Node 应用程序中配置一个可以处理 AJAX 请求的路由,然后您可以从那里将数据写入您的数据库。

当然,您还需要通过请求传递数据。它与您的 $.ajax(/* ... */) 调用中的 options 参数一起传递。

在高层次上,我相信这是您想要实现的目标:

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

  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 数据库通信。因此,您必须通过网络向您的 Node 服务发送请求。在您的后端应用程序中,您可以借助从 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
        })
      });
    },
  });
}

这里违反了很多“最佳实践”,但出于学校作业的目的,这应该会让你找到正确的方向。

【讨论】:

  • 我刚刚删除了之前的反对票,正如in a comment 解释的那样,我把你留在了 OP 的问题之下,他们已经编辑了那部分。我为此道歉,个人现在......觉得他们的问题太宽泛了。不过,一个很好的答案。我仍然支持 ;-) 干杯!
  • 太棒了,我很感激。干杯!
  • 不客气,丹。关于编辑;嗯...我不会太担心的。我之前在 cmets 中所说的,现在不再适用。
  • @FunkFortyNiner 哦哈哈谢谢!我只是为此使用了 Lucid Chart。在工作中,我们总是喜欢制作这样的图表。帮助每个人保持一致并交流想法
  • @Anze 好的,我明白了。我会尽量让我的答案更清楚。但是您的图表是不可能的,我认为您对此感到困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
相关资源
最近更新 更多