bottle und Javascript

Django, Flask, Bottle, WSGI, CGI…
Antworten
djevil
User
Beiträge: 58
Registriert: Montag 22. August 2016, 14:28

Hallo,

Ich möchte Javascript im meiner Webseite aufrufen,

Bilder und Css werden schon ala:

Code: Alles auswählen

@route('/imgs/<filename>')
def server_static(filename):
    return static_file(filename, root=IMGS)
korrekt aufgerufen, nur mit Js geht es irgendwie nicht?

Laut

Code: Alles auswählen

127.0.0.1 - - [06/Mar/2017 20:10:25] "GET /js/time.js HTTP/1.1" 304 0
wird es zumindest gefunden,
und ohne server wird es auch ausgeführt, woran könnte das liegen?

Lg djevil
Zuletzt geändert von Anonymous am Montag 6. März 2017, 20:43, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@djevil: Das sind zu wenig Informationen. Die 304 legt nahe das der Client die Datei schon hat und das sie sich auf dem Server nicht geändert hat.
djevil
User
Beiträge: 58
Registriert: Montag 22. August 2016, 14:28

Ok, ähm,

es wird mit:

Code: Alles auswählen

<script type="text/javascript" src="/js/time.js"></script>

...

<span id="time"></span>
im html aufgerufen,

und im JS mit:

Code: Alles auswählen

document.getElementById('time').innerHTML
Und der Server ist:

Code: Alles auswählen

JS= os.path.join(os.path.dirname(__file__), "js")
CSS= os.path.join(os.path.dirname(__file__), "css")
TEMPLATE_PATH.append(os.path.join(os.path.dirname(__file__), "html"))

@route('/css/<filename>')
def server_static(filename):
    return static_file(filename, root=CSS)

@route('/js/<filename>')
def server_static(filename):
    return static_file(filename, root=JS)


@route('/index')
def index():
    return template('main.html')
lg d
Zuletzt geändert von Anonymous am Dienstag 7. März 2017, 00:15, insgesamt 1-mal geändert.
Grund: Quelltext in Codebox-Tags gesetzt.
djevil
User
Beiträge: 58
Registriert: Montag 22. August 2016, 14:28

Toll, ich habs:

<script type="text/javascript" src="../js/time.js"></script>

:roll:

MannMannMann..
BlackJack

@djevil: Das kann nicht sein. Das wäre ja *über* der Wurzel an der Deine Webanwendung ansetzt, das heisst mit der URL greift dann nicht mehr die ``/js/<filename>``-Route. Oder der Browser korrigiert das wieder zu ``/js/time.js``. Firefox macht das beispielsweise.

Edit: Noch was: Du hast den <script>-Tag vor dem <span> mit der ID gezeigt: Stellst Du im Skript auch sicher, dass der Browser das Dokument vorher zuende geladen hat, bevor Du auf die ID zugreifst?
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

wenn Bottle den Status Code 304 sendet und dein JS _nicht_ läuft, dann liegt es an deinem Code und nicht an Bottle.

Wie BlackJack schon sagt, heißt 304, dass der Browser die Datei schon hat. Hier mal die lange Erklärung auf englisch von httpstatuses.com

"A conditional GET or HEAD request has been received and would have resulted in a 200 OK response if it were not for the fact that the condition evaluated to false.

In other words, there is no need for the server to transfer a representation of the target resource because the request indicates that the client, which made the request conditional, already has a valid representation;..."

Gruß, noisefloor
Antworten