I am trying to build a flask app with jquery that loads html ( $("#main").load("/aboutjs") ) from the flask server into a p () tag when a link is clicked ( About ).
However, when I test it by clicking the link the browser doesn't even seem to be making an xhr request to the flask server for the page.
What am I doing wrong?
===HTML===
<!DOCTYPE html>
<html lang="en">
<head>
<title>JS Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<script type=text/javascript>
function chBackcolor(color) {
document.body.style.background = color;
}
</script>
<script type=text/javascript>
$("#about").click(function(){
$("#main").load("/aboutjs");
});
</script>
</head>
<body>
<nav class="navbar navbar-inverse">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">JS</a>
</div>
<div class="collapse navbar-collapse" id="myNavbar">
<ul class="nav navbar-nav">
<li class="active"><a href="/">Home</a></li>
<li><a id="about" href="#">About</a></li>
<li><a href="/projects">Projects</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid text-center">
<div class="row content">
<div class="col-sm-2 sidenav">
</div>
<div id="main" class="col-sm-8 text-left">
<h1>Welcome</h1>
<p>Test page</p>
<hr>
</div>
<div class="col-sm-2 sidenav">
<div class="well">
<p>ADS</p>
</div>
<div class="well">
<p>ADS</p>
</div>
</div>
</div>
</div>
<footer class="container-fluid text-center">
<p>Footer Text</p>
</footer>
</body>
</html>
===Flask===
from flask import Flask, render_template
# Flask constructor takes the name of
# current module (__name__) as argument.
app = Flask(__name__)
# The route() function of the Flask class is a decorator,
# which tells the application which URL should call
# the associated function.
@app.route('/')
# ‘/’ URL is bound with hello_world() function.
def index():
return render_template('index.html')
@app.route('/about')
def about():
return render_template('about.html')
@app.route('/aboutjs')
def aboutjs():
return render_template('aboutjs.html')
@app.route('/projects')
def projects():
return render_template('projects.html')
@app.route('/contact')
def contact():
return render_template('contact.html')
# main driver function
if __name__ == '__main__':
# run() method of Flask class runs the application
# on the local development server.
app.run()