Übergabe Wert an JS-Funktion über URL laden-Fenster
meiner Seite http://www.dinomuhic.com/2010/index.php lädt das Showreel am Anfang der Seite mithilfe eines onLoad-Aufruf im body-so:
<body onLoad="sndReq('96')">
96 ist die ID, mit der das showreel in der SQL-Bibliothek.
Die JS-Funktion "sndReq" ist ein AJAX-Aufruf mit JQuery öffnet das angeforderte Element und zeigt es im Hauptfenster.
Nun meine Frage: Was ist, wenn ich will senden Sie einen link an einen client öffnet ein bestimmtes Element direkt an, so wird er nicht haben, um durch die Website navigieren?
Etwas wie http://www.dinomuhic.com/2010/index.php?sndReq=234 (was natürlich nicht funktioniert und jetzt öffnet einfach das showreel, wahrscheinlich, weil das onLoad in den body-tag überschreibt es)
Wie kann ich diese umsetzen? Ich möchte in der Lage sein, bestimmte Gegenstände, durch die URL, aber wenn nichts ist über den URL übergeben, es sollten immer offene-posten-96.
Vielen Dank im Voraus. Ich bin mir sicher, dass seine Recht einfach, ich kann einfach nicht sehen es.
Cletus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie parse den query-string. Ich finde der einfachste Weg, um mit der query-string ist Folgendes zu tun. Zuerst müssen Sie zum extrahieren der query-string aus der URL:
Dann können Sie Streifen aus dem
?
- und split-jeder query-string-parameter in ein array:Nun können Sie bauen eine hash-Tabelle-Objekt, das name/Wert-Paare, aus denen die Abfrage-string:
In Ihrem
onload
Sie können nun die parameter folgendermassen:Stellen Sie sicher, dass der code ausgeführt wird innerhalb eines Skripts in der
head
des Dokuments, so dass es ist berechnet, bevor deronload
ausgeführt wird.window.location.hash
, die nicht inwindow.location.search
.var queryStr = window.location.search; var paramPairs = queryStr.substr(1).split('='); var query = paramPairs[1]; if ( !query ) { query = '96'; } sndReq(query);
wenn Sie mit jQuery sind, warum nicht verwenden Sie die DOM-ready-handler anstelle von
onload
? in diesem Sinne, wenn es sich nur um eine ajax-Anfrage, Sie brauchen nicht einmal zu warten, bis das DOM-ready. wenn Sie die Abfrage analysieren, Sie sollten in der Lage sein zu gehen, dass Sie sich in Ihrer bestehenden Funktion.hoffe, das hilft! cheers.
head
tag, oder fügen Sie den code aus der Funktion in ein anderes DOM-ready-handler (falls Sie bereits eine haben). wenn Sieconsole.log(query)
vor dem AufrufsndReq
hat es den Wert, den Sie erwarten?var queryStr = window.location.search; var paramPairs = queryStr.substr(1).split('='); var query = paramPairs[1]; if ( !query ) { query = '96'; } sndReq(query);
- und es funktionierte. Ich danke Ihnen sehrKönnen Sie RegExp um dies zu erreichen, Lesen Sie den url-Parameter und übergeben Sie an ajax.
dieses einfache Skript liest die aktuelle url und übergeben durch regex-filter für die Parameter, die Sie angeben.
window.location.search
hat dieser Wert auch schon (es ist zuverlässiger als die manuelle Analyse). auch, warum sollten Sie extra globals (gip
undThisReq
), wenn Sie nicht benötigt werden?