2016-08-28 6 views
0

Ok, also ich bin neu in Express. Ich bin mit Sessions und Ajax-Anrufen beschäftigt, aber das Problem, das ich habe ist, dass, wenn ich meine App laufen, meine Jquery aus irgendeinem Grund nicht funktioniert. Dies ist der Code, den ich habe:jQuery funktioniert nicht in Express JS - NodeJS

app.js

var express = require("express"); 
var mongoose = require("mongoose"); 
var bodyParser = require("body-parser"); 
var session = require('express-session') 

var app = express(); 
app.use(express.static("public")); // I understand this is the directory where I would need to put all my static files: css, js, images, etc. 
app.set("view engine", "jade"); 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({extended: true})); 

//Set secre pass for the session 
app.use(session({secret:'password'})); 


app.get("/",function(req, res){ 

    if(req.session.userName){ 
     res.render("admin", {session_name: req.session.userName}); 
    }else{ 
     res.render("home"); 
    } 

}); 

app.post("/example-ajax", function(req, res){ 
    res.send(req.body.email); // return the email that was sent by the client 
}); 

app.post("/log-in", function(req, res){ 
    req.session.userName = req.body.name; 
    res.redirect("/"); 
}); 

app.get("/log-out", function(req, res){ 
    req.session.destroy(); 
    res.redirect("/"); 
}); 

app.listen(8080); 

admin.jade

extends layout_head.jade 
block content 
    div(class="container") 
     div(class="row") 
      div(class="col-lg-6 col-lg-offset-3") 
       h1 Logged In!! 
       h3 Logged in as: #[b #{session_name}] 
       a(href="/log-out") Log Out 
       br 
       div(class="btn btn-info testAjax") Test Ajax 

    script(src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js") 
    script(href="/css/bootstrap/js/bootstrap.min.js") 
    script(href="/js/main.js") 

main.js

$(document).ready(function(){ 
    alert("Loaded"); 

    $(".testAjax").on("click", function(){ 
     alert("test"); 

     $.ajax({ 
      type: 'POST', 
      url: '/example-ajax', 
      data: { 
       email: "[email protected]" 
      }, 
      success: function(data){ 
       // data = the email being returned from the server 
       console.log("Your email is: " + data); 
      } 
     }); 
    }); 

}); 

So Wie ich schon sagte, die jquery läuft nicht, wenn meine Seite geladen wird oder wenn ich auf die Schaltfläche testAjax klicke. Wenn ich die Konsole überprüfe, gibt es mir keine Fehler, daher weiß ich nicht, was das Problem verursacht.

Meine zweite Frage ist: Ist dies der richtige Weg, um Ajax in Express ruft?

Jede Hilfe wird sehr geschätzt. Vielen Dank.

+4

Skript src und Skript href? sieht aus wie jquery geladen, aber nicht andere Skripte –

+0

@ArtemGorlachev Haha WOW Ich kann nicht glauben, dass ich das nicht gesehen habe! Vielen Dank für Ihren Kommentar. Es funktioniert jetzt. Du solltest die Antwort schreiben, damit ich sie annehmen kann. –

Antwort

1

Ich musste nur href zu src in den Skript-Tags ändern.