Seite 1 von 1

bottle und Javascript

Verfasst: Montag 6. März 2017, 20:13
von djevil
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

Re: bottle und Javascript

Verfasst: Montag 6. März 2017, 20:42
von 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.

Re: bottle und Javascript

Verfasst: Montag 6. März 2017, 21:15
von djevil
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

Re: bottle und Javascript

Verfasst: Montag 6. März 2017, 21:59
von djevil
Toll, ich habs:

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

:roll:

MannMannMann..

Re: bottle und Javascript

Verfasst: Dienstag 7. März 2017, 00:30
von 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?

Re: bottle und Javascript

Verfasst: Dienstag 7. März 2017, 08:29
von noisefloor
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