使用用户输入搜索 JSON 解析的 MySQL 数据
Search JSON Parsed MySQL Data using user input
嗨,我正在构建一个HTML5应用程序来显示来自远程MySQL的数据。
现在,以下代码能够获取数据并显示在应用程序中。
我的应用程序中还有 2 个下拉菜单来过滤结果。如何获取下拉列表以筛选 JSON 解析的数据?
.HTML
//Filter input box/dropdown
<form>
Title:<br>
<input type="text" name="title"><br>
City:<br>
<input type="text" name="city">
</form>
<div id="id01"></div>
我的简斯
var xmlhttp = new XMLHttpRequest();
var url = "http://localhost/mysql.php";
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
myFunction(xmlhttp.responseText);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
function myFunction(response) {
var arr = JSON.parse(response);
var i;
var out = "<table>";
for(i = 0; i < arr.length; i++) {
out += "<tr><td>" +
arr[i].title +
"</td><td>" +
arr[i].City +
"</td><td>" +
arr[i].level +
"</td></tr>";
}
out += "</table>";
document.getElementById("id01").innerHTML = out;
}
谢谢
在我们开始之前,让我提一下我修改的内容。
- 我在两个
input
元素上都添加了id
。 - 我为下面的示例创建了一个新
originalJSONArr
。
好了,我们走吧!
关于网页
input
元素是交互式的,并且具有输入事件。这意味着我们可以使用输入事件作为触发事件;当用户在元素中键入任何内容时input
执行某些操作。因此,我添加了id
来标识每个输入。
Title:<br>
<input id="title" type="text" name="title"><br>
City:<br>
<input id="city" type="text" name="city">
关于 JavaScript
我喜欢函数式编程,您可以看到每个实现的函数。如您所见,addEventListeners
是在元素上添加事件,titleEvent
和回调函数cityEvent
在触发事件时执行。
此外,还有filterJSON
功能将由您定义。这并不难! filterJSON(values);
是使用values
参数执行filterJSON
函数的语句。因此,您可以将修改后的values
参数用作函数filterJSON
局部变量。
function addEventListeners(filterJSON) {
var titleInput = document.getElementById('title'), // Get element.
cityInput = document.getElementById('city'),
values = {};
function titleEvent() {
values.title = this.value; // Get element value.
filterJSON(values); // Execute callback function 'filterJSON'.
}
function cityEvent() {
values.city = this.value;
filterJSON(values);
}
titleInput.addEventListener('input', titleEvent); // Bind event listener with 'input' event and 'titleEvent' function.
cityInput.addEventListener('input', cityEvent);
}
最后一部分是做目的!您可以使用Array.prototype.filter
方法来实现我们的目标。见下文。
var originalJSONArr = [
{
title: 'Taiwan',
city: 'Taipei City'
},
{
title: 'Taiwan',
city: 'Taichung'
},
{
title: 'USA',
city: 'New York'
},
{
title: 'USA',
city: 'Chicago'
},
{
title: 'USA',
city: 'Miami'
},
{
title: 'USA',
city: 'Boston'
}
];
addEventListeners(
function(values) { // This is the 'filterJSON' callback as mentioned.
var filteredJSON = originalJSONArr.filter(function(item) {
return (item.title === values.title || item.city === values.city);
});
// You can do anything with filteredJSON as of here.
console.log(filteredJSON);
}
);
关于示例
现在,请尝试以下代码片段!在输入中键入Taiwan
title
您将看到其title
Taiwan
的对象。或者在输入city
输入中输入特定的城市名称。
function addEventListeners(filterJSON) {
var titleInput = document.getElementById('title'), // Get element.
cityInput = document.getElementById('city'),
values = {};
function titleEvent() {
values.title = this.value; // Get element value.
filterJSON(values); // Execute callback function 'filterJSON'.
}
function cityEvent() {
values.city = this.value;
filterJSON(values);
}
titleInput.addEventListener('input', titleEvent); // Bind event listener with 'input' event and 'titleEvent' function.
cityInput.addEventListener('input', cityEvent);
}
var originalJSONArr = [
{
title: 'Taiwan',
city: 'Taipei City'
},
{
title: 'Taiwan',
city: 'Taichung'
},
{
title: 'USA',
city: 'New York'
},
{
title: 'USA',
city: 'Chicago'
},
{
title: 'USA',
city: 'Miami'
},
{
title: 'USA',
city: 'Boston'
}
];
addEventListeners(
function(values) { // This is the 'filterJSON' callback as mentioned.
var filteredJSON = originalJSONArr.filter(function(item) {
return (item.title === values.title || item.city === values.city);
});
// You can do anything with filteredJSON as of here.
console.log(filteredJSON);
}
);
Title:<br>
<input id="title" type="text" name="title"><br>
City:<br>
<input id="city" type="text" name="city">
相关文章:
- 使用jquery将mysql数据获取到新的表行中
- 单击鼠标,用MySQL数据填充html表单输入字段
- 使用 mysql 数据创建条形图
- 使用 Ajax 将 PHP 嵌入到 JavaScript 中,以便将 MySQL 数据存储在 JavaScript 对象
- 用 MySql 数据填充 JavaScript 数组
- 使用javascript和php推送MySQL数据
- 使用html表显示MySql数据
- 我无法获取显示mySql数据的Slickgrid
- 使用javascript和ajax插入mysql数据
- 无法获取 AJAX 表单来提交 MySQL 数据
- 如何使用 .ajax 拉取 MySQL 数据并用它填充表单
- 使用 Ember.js 从 Laravel 后端加载 Mysql 数据
- 为什么尽管查询查找记录,mysql 数据没有拉入表单,查找值是否需要是唯一的
- 使用 mysql 数据在 php 中构建多维数组
- 获取 MySql 数据到 PHP 数组并转换为 Javascript 数组
- 使用 jQuery ajax 从选择框加载 MySQL 数据时遇到困难
- PHP页面未更新MySQL数据
- 如何在php中从mysql数据中绘制树结构
- 如何在javascript代码中获取Mysql数据
- 骨干关系型,使用mysql数据将模型表示为表行