【问题标题】:JQuery Fetch data from MySQL and store into VariableJQuery 从 MySQL 获取数据并存储到变量中
【发布时间】:2017-06-29 04:48:02
【问题描述】:

我正在继续处理我的多阶段引导表单,但我在尝试从我的数据库中提取信息时遇到了障碍。

主页是 PHP 并且被命名为 quote_tool.php

我有以下功能需求:

  1. 数据必须来自 MySQL 数据库。
  2. 用户应该只接收他们请求的数据(即,只有在用户选中单选按钮以在表单中包含用户许可时,才应该从数据库中获取包含用户许可信息的一行)。
  3. 需要从数据库中调用信息而不刷新/重新加载页面。

目前我的数据库中有一个包含以下列的表:

目前该表中有 3 种不同的产品。用户可以选择一个收音机来表示他们想要包含端点,然后有 3 个复选框允许用户输入他们想要包含的端点的数量。

输入字段如下所示:

<label for="device-9102" class="form-partner-label"><input type="checkbox" class="quote-chkbox" id="9102-chk"> 9102 IP Phone</label>
<input type="text" name="9102-quantity" class="form-endpoint-qty form-control" id="form-partner-9102" readonly value="0">

当用户选中该框并输入一个值时,该值会在摘要页面以及以下字段中动态更新:

<input type="text" readonly name="sum-9102-qty" class="summary-field sum-qty" id="sum-9102-qty">

关于此产品的摘要页面上还有 2 个其他字段。

  • 建议零售价
  • 部件号

MSRP 是一个隐藏字段,将用于其他计算,但部件号在摘要页面上可见。

当用户输入端点数量的值时,我需要调用数据库并从 refEndpoints 表中提取 MSRP 和部件号。

我目前正在构建一个函数,用于在用户点击表单上的“下一步”按钮时调用数据库,如下所示:

//Call DB to fetch part number and msrp of 9102
    $('#form-partner-9102').change(function()){ 
        var quantity_9102 = $('#form-partner-9102').val();
        if(quantity_9102 !== 0) {

        }
    });

这是我坚持的一点。我不知道如何调用数据库并将部件号和 MSRP 的值放在摘要页面上的正确输入字段中。

【问题讨论】:

  • 您正在寻找的技术称为 AJAX。在高层次上,您将创建一个服务器端“页面”(发出 JSON 数据而不是 HTML 页面的 PHP 文件),它接受所需的输入,从数据库中获取数据,并将输出写回。您的客户端 JavaScript 代码将向该“页面”的 URL 发出 AJAX 请求,将值作为您认为合适的 POST 或 GET 参数提供,并接收响应。然后,客户端代码将使用该响应在页面上执行它需要执行的任何操作。 JavaScript 不会与数据库对话,PHP 会代理这种交互。

标签: javascript php jquery mysql


【解决方案1】:

jQuery 在客户端运行,因此无法直接连接到 MySQL,但是您的问题标记为 ,它在服务器端运行,因此可以连接到您的数据库。首先,您需要设置一个可以响应 HTTP POST 请求并返回 JSON 的 PHP 文件。这是一个很好的答案,向您展示了如何做到这一点:Returning JSON from PHP to JavaScript?

一旦设置好(你需要检查这个 PHP 文件接受哪些参数,以及它如何将它转换为查询以便它可以响应)你现在可以设置一些简单的 JavaScript 来调用这个 PHP 文件(让我们调用它query.php)。执行此操作的代码可能如下所示:

$.post('/query.php', {quantity: $('#form-partner-9102').val()}, function(resp) {
  $('#PartNumber').html(resp.PartNumber);
});

需要牢记的一些重要事项是在接受用户输入并将其转换为查询时始终确保使用prepared statements(不要只是通过joining strings 构建SELECT 语句)。另外请务必查看您的事件绑定,您可能可以为您的输入编写一个通用处理程序,将合作伙伴 ID 作为 data-* attribute,从而使您的代码更小且更易于维护。

【讨论】:

  • 您提供给我的这段代码是否旨在仅获取数据库中项目的部件号? (假设您上面提到的所有其他工作都已完成)。
  • 这只是为了展示如何在不刷新页面的情况下将POST 转换为php,甚至使用服务器响应来更新您的页面。
  • 这很快就超出了我的想象。
  • 那么让我们退后几步,你能不能制作一个连接到数据库的 PHP 页面,从 $_POST 读取参数,构建查询,并从记录集中打印一些 JSON?
  • 我的注册页面连接到数据库以将新用户的信息放入其中,我的登录页面连接到数据库以验证用户并创建会话。但是,我还没有使用 JSON。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 2020-07-06
  • 2015-12-22
  • 2013-05-16
  • 2019-08-19
  • 1970-01-01
相关资源
最近更新 更多