从文件中读取json数据

时间:2011-06-26 10:57:07

标签: javascript json go

我正在使用Go编程语言运行服务器,当我在浏览器中加载服务器时,将调用临时处理程序函数,并且此临时处理程序函数将提供getjson.html文件。现在屏幕显示“Get Json Data”按钮。单击此按钮,我没有得到任何结果(因为应该在屏幕上显示某些内容)。

我检查了javascript控制台,因此没有错误。 我无法弄清楚问题是什么,为什么屏幕上没有任何输出。

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)
}

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)
}

json_data.js的内容:

{ 
  "firstName": "John",
  "lastName": "Doe",
  "age": 25
}

3 个答案:

答案 0 :(得分:0)

是的,你可以。 Live example.前提是json.txt是运行此代码的文档旁边的资源,并且(在某些浏览器上)提供的资源不是从本地文件运行(例如,file:// URL而不是http://;有些浏览器可以使用本地文件通过ajax访问其他本地文件,其他浏览器则没有。)

几点说明:

  • $("div").append(field + " ");
    

    行,field将是每个属性的(例如,“John”)。

  • 列出属性的顺序是完全未定义的。

因此,对于特定的示例,您可能会更好地使用

<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    $.getJSON("json.txt",function(result){
      $("div").append(result.firstName + " " + result.lastName + " " + result.age);
    });
  });
});
</script>

Live example


更新:根据您对其他答案的评论,您可能不清楚脚本代码的运行位置和方式。 JavaScript脚本在客户端的浏览器上运行。用于引用json.txt的路径与(例如)要在页面上显示的图像的路径完全相同。必须可以通过Web服务器访问json.txt,就像需要通过Web服务器访问图像一样。将json.txt视为您网页使用的另一种资源,就像其他资源一样。就路径而言,以及如何使json.txt可用,适用相同的规则。需要说明的是:在网页中运行客户端的脚本无法访问浏览器无法检索的服务器端文件。


更新2 :您发布了更多代码,看起来您已使服务器提供getjson.html文件。您的服务器必须提供json.txt文件,否则浏览器无法访问它。

答案 1 :(得分:0)

很抱歉,如果这与Go无关,但我在这里搜索JQuery中的类似问题的解决方案,并且解决方案与使用的工具无关。

我今天遇到了一个问题,即在没有数据库的情况下模拟链接到数据库的程序的Json查询。所以我将Json结果保存到文件中,并希望使用它。 json.txt文件位于服务器上并且可以在浏览器中查看,但是$ .getJSON正在犯错误。

要解决此问题,我所要做的就是使用“html”扩展名重命名文件,例如json.html,并删除文件中的标题。即,您需要在文本文件的开头没有“Content-Type:application / json”。

可能特定于Web服务器(Apache)或浏览器安全性(Firefox),但至少它起作用。

答案 2 :(得分:-1)

$ .getJSON()需要一个URL作为参数。您正尝试从本地计算机/服务器的目录结构访问文件,这在JS中是不可能的。

请参阅jquery文档http://api.jquery.com/jQuery.getJSON/