将MySQL数据传递到HTML选择列表

时间:2020-01-23 18:42:57

标签: mysql node.js json

在将MYSQL查询结果传递到HTML选择列表时,我需要一些帮助。我能够从此处http://jsonplaceholder.typicode.com/todos传递JSON列表中的一些数据,但是无法传递自己发送到localhost:7002 / getJson的数据。这是格式化的事情,请看一下我的代码和数据,看看可以更改什么。谢谢!

route.js

    <ListBox Name="Playlists_ListBox">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid Margin="0,2" >
                    <Grid.ContextMenu>
                        <ContextMenu Name="cm"  StaysOpen="true" >
                            <MenuItem Header="Delete"/>
                        </ContextMenu>
                    </Grid.ContextMenu>
                    <TextBlock Name="Name" Text="{Binding Title}"  Foreground="White"/>
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

signup.ejs

module.exports = function(app, passport) {
 app.get('/', function(req, res){
  res.render('index.ejs');
 });

 app.get('/login', function(req, res){
  res.render('login.ejs', {message:req.flash('loginMessage')});
 });

 app.post('/login', passport.authenticate('local-login', {
  successRedirect: '/profile',
  failureRedirect: '/login',
  failureFlash: true
 }),
  function(req, res){
   if(req.body.remember){
    req.session.cookie.maxAge = 1000 * 60 * 3;
   }else{
    req.session.cookie.expires = false;
   }
   res.redirect('/');
  });

 app.get('/signup', function(req, res){
  res.render('signup.ejs', {message: req.flash('signupMessage')});
 });

 app.post('/signup', passport.authenticate('local-signup', {
  successRedirect: '/profile',
  failureRedirect: '/signup',
  failureFlash: true
 }));

 app.get('/profile', isLoggedIn, function(req, res){
  res.render('profile.ejs', {
   user:req.user
  });
 });

 app.get('/logout', function(req,res){
  req.logout();
  res.redirect('/');
 })

 //-SQL QUERY
 var express = require('express')
  , http = require('http')
  , mysql = require('mysql'); // <---- HERE

 var app = express();

 var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: "password",
    database: 'testdb'
 });

 connection.connect(); // <---- AND HERE

 // all environments
 app.set('port', process.env.PORT || 7002);


 app.get('/getJson',function(req,res){
    connection.query('SELECT * FROM testtable', function(err, result, fields){
       if(err) {
           console.log(err); 
           res.json({"error":true});
       }
       else { 
        //    console.log(result); 
           console.log(JSON.stringify(result));
           res.json(result); 

       }


       });

    } );

 http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
 });
 };

 //-SQL QUERY END


function isLoggedIn(req, res, next){
 if(req.isAuthenticated())
  return next();

 res.redirect('/');
}

来自:http://localhost:7002/getJson enter image description here

来自:http://localhost:8080/signup enter image description here

从控制台

enter image description here

1 个答案:

答案 0 :(得分:1)

您的请求被CORS(跨源资源共享)策略阻止,因为您的主机不同(localhost:8080和localhost:7002),并且快速服务器的响应者中没有Access-Control-Allow-Origin头。

您可以从原始站点(localhost:8000)为CORS添加支持,并向快递服务器添加一些HTTP标头:

var app = express();

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "localhost:8000"); // update to match the domain you will make the request from
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});