Я пытаюсь, чтобы раскрывающийся список отображал информацию, содержащуюся в базе данных SQLite3. Есть три имени входа: Филипп, Джон и Кэрол с соответствующими полями и данными для каждого имени, которое является профессией каждого человека изображение jpg.
Я пытаюсь сделать это с помощью node.js и jquery. Пожалуйста, смотрите код ниже. Я получаю сообщение об ошибке, например ниже:
GET http://localhost:5000/nameJohn 404 (не найдено)
Я предполагаю, что это может быть связано с запросом ajax get call ниже с идентификатором имени из базы данных:
$ ( '# pet_owners'). (на 'изменить', функция () {
$ .Get ( 'имя' + this.value, функция (данные) {
<HTML>
Name:
<select id="pet_owners">
<option value="Philip">Philip</option>
<option value="John">John</option>
<option value="Carol">Carol</option>
</select>
<select id="info">
</select>
</HTML>
`````````````````````````````````````````````````````````````````````````````
<SCRIPT>
<JQUERY>
$('#pet_owners').on('change',function(){
$.get('name'+this.value,function(data){
for(var j = 0; j < length; j++)
{
$('#info').contents().remove();
var newOption = $('<option/>');
newOption.attr('text', data[j].text);
newOption.attr('value', data[j].value);
$('#info').append(newOption);
}
});
});
</SCRIPT>
`````````````````````````````````````````````````````````````````````````````
<JAVASCRIPT MAIN FILE>
const express = require('express');
const app = express();
app.use(express.static('static_files'));
const sqlite3 = require('sqlite3');
const db = new sqlite3.Database('pets.db');
app.get('/users/:userid', (req, res) => {
const nameToLookup = req.params.userid; // matches ':userid' above
db.all(
//sql query:
'SELECT * FROM users_to_pets WHERE name=$name',
//parameters to pass into SQL query:
{
$name: nameToLookup
},
res.json(nameToLookup));
});
app.listen(5000, () => {
console.log('Server started at http://localhost:5000/');
});
`````````````````````````````````````````````````````````````````````````````
<SQLITE3 DATABASE CREATION SCRIPT>
const sqlite3 = require('sqlite3');
const db = new sqlite3.Database('pets.db');
// run each database statement *serially* one after another
// (if you don't do this, then all statements will run in parallel,
// which we don't want)
db.serialize(() => {
// create a new database table:
//db.run("CREATE TABLE users_to_pets (name VARCHAR(255), job
VARCHAR(255), pet VARCHAR(255))");
db.run("CREATE TABLE users_to_pets (name TEXT, job TEXT, pet TEXT)");
// insert 3 rows of data:
db.run("INSERT INTO users_to_pets (name, job, pet) VALUES ('Philip',
'professor', 'cat.jpg')");
db.run("INSERT INTO users_to_pets (name, job, pet) VALUES ('John',
'student', 'dog.jpg')");
db.run("INSERT INTO users_to_pets (name, job, pet) VALUES ('Carol',
'engineer', 'bear.jpg')");
//db.run("INSERT INTO users_to_pets VALUES ('Philip', 'professor',
'cat.jpg')");
//db.run("INSERT INTO users_to_pets VALUES ('John', 'student',
'dog.jpg')");
//db.run("INSERT INTO users_to_pets VALUES ('Carol', 'engineer',
'bear.jpg')");
console.log('successfully created the users_to_pets table in pets.db');
// print them out to confirm their contents:
db.each("SELECT name, job, pet FROM users_to_pets", (err, row) => {
console.log(row.name + ": " + row.job + ' - ' + row.pet);
});
});
db.close();