基于 HTML 选择选项执行 Node.JS 查询

Posted

技术标签:

【中文标题】基于 HTML 选择选项执行 Node.JS 查询【英文标题】:Perform Node.JS Query based on HTML select option 【发布时间】:2016-06-11 19:07:15 【问题描述】:

我正在尝试根据用户从我网站的选择选项中选择的内容对 mysql 数据库执行特定查询。

html

<select id = "year">
<option value = "yr" selected>Choose a Year</option>
<option id = "2015">2015</option>
<option value="2014">2014</option>
<option value="2013">2013</option>
<option value="2012">2012</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
</select>

Node.JS:

    function handleDatabase(request,response)
     pool.getConnection(function(err, connection)
    //Check if there's an error, if so, stop connection and print error
      if(err)
        connection.release();
        response.json("code": 50, "status": "Error in connection to database");
        return;
    
    connection.query("select * from 'fifteen' where TYPE = 'Mischief'", function(err, rows)
      connection.release();
      if(!err)
        response.json(rows);
      
    );
      response.json("code": 50, "status" : "Error in connection to database");
      return;
    );
  );


app.get('/',function(request,response)
    handleDatabase(response,request);
    

AJAX:

$(document).ready(function()
    $('#year').click(function() 
            $.ajax(
                type: 'GET',
                url: 'http://localhost:8888/',
                dataType: 'json',
                success: function () 
                    console.log("Success");
                ,
                error: function (data) 
                    console.log("Error.", data);
                

            );
    );
);

我希望用户能够选择他们想要的每一年,然后在服务器上执行 AJAX 请求,然后服务器将对数据库执行查询。例如,用户选择 2014,向服务器发出 AJAX 请求,服务器随后对表 14 进行查询,并从中返回所有数据。

【问题讨论】:

【参考方案1】:

一种解决方案是只对动态 url 参数使用 express 中间件:

var express = require('express');
var router = express.Router();

router.get('/yearQuery/:year', function(req, res) 
  var year = req.params.year;

  // Your code

  res.json(//year data object);
);

Ajax 请求变为:

$.ajax(
  type: 'GET',
  url: 'http://localhost:8888/yearQuery/' + year,
  dataType: 'json',
  success: function () 
    console.log("Success");
  ,
  error: function (data) 
    console.log("Error.", data);
                

其余部分由您填写(例如年份值的文档 ID 选择器)。

【讨论】:

您能详细说明一下吗?我对这一切都非常陌生。对于您添加的路由器,这是否需要用户在 url 末尾手动输入他们想要的年份?而当你做“/yearQuery/+year”的时候,那个year变量是预定义的还是自己填写的? 用户只是从您的一个按钮或选择器中选择年份。您的代码正在创建网址。 年份变量由 url 填充。 您需要使用标准 jquery 从您的选择器中选择选定的值,从该值创建一个 VAR,将该 var 命名为年份,这就是您的 ajax url 中的年份变量。

以上是关于基于 HTML 选择选项执行 Node.JS 查询的主要内容,如果未能解决你的问题,请参考以下文章

Node.js:如何在提交时读取用户选择选项并在 textarea 中提供文件内容

node.js

node.js 怎么连接mssql数据库,最好有简易的方法

创业笔记-Node.js入门之一个完整的基于Node.js的web应用

基于nodejs的DNS查询工具

node.js教程基础:node.js命令行选项