Lesen von json-Daten aus einer Datei
Mir läuft ein server mit Go-Programmiersprache, und wenn ich laden Sie die server in den browser, die temp-handler-Funktion aufgerufen und die getjson.html die Datei ist gedient durch diesen temp-Handler-Funktion. Jetzt ist der Bildschirm zeigt eine "Get Json-Daten" - Taste. Beim klicken auf diese Schaltfläche klicken, ich bin nicht immer alle Ergebnisse (wie etwas sein sollte auf dem Bildschirm angezeigt).
Ich habe in der javascript-Konsole und es sind keine Fehler als solche.
Ich bin nicht in der Lage, herauszufinden, was das problem ist, warum gibt es keine Ausgabe auf dem Bildschirm.
Inhalt servejson.go :
package main
import (
"http"
"flag"
)
var path = flag.String("root", "/home/chinmay/work/json/getjson.html", "Set root directory, use absolute path")
func temp(w http.ResponseWriter, r *http.Request){
w.Header().Set("Content-Type", "text/html")
http.ServeFile(w,r,*path)
}
func main(){
http.HandleFunc("/",temp)
http.ListenAndServe(":8080", nil)
}
Inhalt getjson.html :
package main
import (
"http"
"flag"
)
var path = flag.String("root", "/home/chinmay/work/json/getjson.html", "Set root directory, use absolute path")
func temp(w http.ResponseWriter, r *http.Request){
w.Header().Set("Content-Type", "text/html")
http.ServeFile(w,r,*path)
}
func main(){
http.HandleFunc("/",temp)
http.ListenAndServe(":8080", nil)
}
Inhalt json_data.js:
{
"firstName": "John",
"lastName": "Doe",
"age": 25
}
- Ja, das sollte möglich sein -
getJSON()
sollte dies tun, obwohl der text-Datei den content-type wirdtext/plain
. Ich bin mir nicht ganz sicher, aber warum nicht einfach ausprobieren? - Sind Sie versuchen, den text zu Lesen-Datei von der lokalen Maschine? Ich glaube nicht, dass das möglich ist in js
- eigentlich Suche ich einen server laufen und dann würde ich dienen, diese html-Datei mit dem js-script würde dann versuchen, auf die file.txt um die json-Daten und drucken Sie es auf dem Bildschirm.
- Das ist in Ordnung, sofern
json.txt
ist verfügbar über HTTP und (mit dem Pfad, die Sie gegeben haben) ist ein peer des Dokuments, in dem dieser code ausgeführt wird (z.B.http://example.com/page.html
undhttp://example.com/json.txt
). - Könnten Sie mir genau sagen, warum mein code, den ich oben gegeben habe, ist nicht ausgeführt, es folgt, was Sie gesagt haben ! Jedoch bin ich nicht in der Lage zu bekommen, eine Ausgabe, wie Sie zeigte mir in Ihrem Beispiel. Du bist nicht der Zugriff auf eine Datei, und ich versuche, auf eine Datei zuzugreifen json.txt könnte Sie Ihnen zeigen, beispielsweise in dieser Perspektive ?
- BITTE beachten Sie die praktische Formatieren Feld rechts neben der Frage Bereich, der [?] über die Frage, Bereich, und auf die Vorschau unten. Ich habe bereits behoben-Formatierung einmal, und Ihr neuester Bearbeiten, bricht es wieder. Auch deine Bearbeitung macht keinen Sinn, was du bist (jetzt) zeigt, bei "Inhalte von getjson.html" sieht genauso aus, wie der Inhalt von "servejson.gehen". Ich war fix der code-Formatierung, wieder für Sie, aber got geworfen von diesem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie können. Live-Beispiel. Vorausgesetzt, dass
json.txt
ist eine Ressource, die neben dem Dokument, in dem dieser code ausgeführt wird, und (bei einigen Browsern), sofern dieser nicht ausgeführt wird, von einer lokalen Datei (z.B. einfile://
URL anstelle einerhttp://
ein; einige Browser sind in Ordnung mit lokalen Dateien Zugriff auf andere lokale Dateien über ajax, andere nicht).Ein paar Anmerkungen:
In der
Linie
field
werden die Wert jeder Eigenschaft (z.B. "John").Also, für dieses bestimmten Beispiel, würden Sie wahrscheinlich besser dran mit
Live-Beispiel
Update: Aus Ihren Kommentaren auf eine andere Antwort, scheint es, wie Sie sein könnten, unklar, wo und wie der script-code ausgeführt wird. Das JavaScript-Skript läuft auf der client-browser. Der Pfad zu verwenden, um die Referenz
json.txt
ist genau wie (sagen wir) den Pfad zu einem Bild, das Sie wollen, um zu zeigen, auf einer Seite.json.txt
muss der Zugang über den web-server, genauso wie ein Bild würde die zugänglich sein müssen, über den web-server. Denkenjson.txt
einfach als eine weitere Ressource, die von Ihrer web-Seite, wie jede andere. In Bezug auf den Pfad, und wie Sie haben, umjson.txt
zur Verfügung, gelten die gleichen Regeln. Um klar zu sein: Script läuft auf client-Seite in einem web-Seite keinen Zugriff auf server-side-Datei können nicht abgerufen werden, durch den browser.Update 2: Du gepostet hast mehr code, und es sieht aus wie Sie haben Ihren server nur dienen der
getjson.html
- Datei. Ihre server auch zu dienen hat diejson.txt
- Datei, oder kann der browser nicht darauf zugreifen.json.txt
- Datei zugänglich sein müssen im BROWSER. Geben Sie die URL derjson.txt
- Datei in Ihrem browser-Fenster. Siehst du das JSON? Wenn nicht, dann ist es nicht zugänglich für die browser. Wenn es ist, Ihre clientseitigen code verwenden, wird es funktionieren. Ich weiß nicht, die server-Technologie, die Sie verwenden genug, um zu verstehen, was das server-code und nicht dienen, aber Sie müssen nur sicherstellen, dassjson.txt
ist der richtige Ort, um zu Essen, und dass der server so konfiguriert ist, es zu dienen.file://
URLs, nur HTTP(S) lieben. Einige Browser erlauben esfile://
URLs zu ladenfile://
URLs über ajax, aber die meisten nicht. Und man kann sicherlich nicht ladenfile://
URL aus einerhttp://
URL aus offensichtlichen Gründen der Sicherheit. Ihrejson.txt
(oderjson_data.js
scheinen Sie sich verändert zu haben die Namen?) und Ihregetjson.html
Dateien müssen dann per HTTP abgerufen werden, die ist, warum ich immer hämmern auf etwa Ihr braucht, um dienen der JSON-Datei.Sorry, wenn dies nicht im Zusammenhang zu Gehen, aber ich falt hier bei der Suche eine Lösung zu einem ähnlichen problem in JQuery und die Lösung steht in keinem Zusammenhang mit dem verwendeten Werkzeug.
Hab ich ein problem heute, um zu simulieren eine Json-Abfrage auf ein Programm verlinkt zu einer Datenbank, ohne die Datenbank. So Sparte ich eine Json-Ergebnis in einer Datei und wollte es statt. Die json.txt die Datei war auf einem server und kann im browser, sondern $.getJSON war ein trowing error.
Dieses problem zu lösen,, alles, was ich zu tun hatte, ist zu benennen Sie die Datei mit einem "html" - Endung, wie json.html und zum entfernen der header in der Datei. d.h. Sie müssen NICHT über "Content-Type: application/json" in den Anfang Ihrer Textdatei.
Werden könnte, zu einer bestimmten web-server (Apache) oder "browser-Sicherheit" (Firefox), aber mindestens es funktionierte.
$.getJSON() eine URL als parameter. Sie versuchen, Zugriff auf eine Datei aus der Verzeichnisstruktur auf dem lokalen Rechner/server nicht möglich ist, in JS.
Finden Sie in der jquery-Dokumentation http://api.jquery.com/jQuery.getJSON/