服务json文件从GO服务器到JavaScript客户端
问题描述:
我有一个go服务器,它必须通过提供json文件来响应javascript请求。 json文件是一个对象数组。服务json文件从GO服务器到JavaScript客户端
我的代码:
服务器端
package expt
import (
"net/http"
)
func init() {
http.HandleFunc("/", handleStatic)
http.HandleFunc("/loadTrials", handleloadJson)
}
func handleStatic(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Cache-Control", "no-cache")
http.ServeFile(w, r, "static/"+r.URL.Path)
}
func handleloadJson(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "static/trial.json")
}
客户端
loadTrials : function loadTrials() {
var _this = this,
load = this.shadowRoot.querySelector('#load-trial');
load.url="http://url:8080/loadTrials";
load.go()
load.addEventListener('core-response', function(ev) {
console.log(ev.detail.response)
}, false);
}
的Json
{
"trial-data" : [
{
"trial" : {
"index": 0,
}
},
{
"trial" : {
"index": 1,
}
}
]
}
如果我这样做,我得到了JavaScript中的JSON对象,但如果我试图查看JSON获取数组,即console.log(ev.detail.response ['trial-data']),那么这不起作用。
答
ev.detail.response
只是一个字符串响应,它不是一个解析的json对象。
首先,您需要使用JSON.parse()
解析它,然后才能访问其内容。
看到这个JavaScript示例:
var json = '{"trial-data":[{"trial":{"index": 0}},{"trial":{"index":1}}]}'
alert(JSON.parse(json)['trial-data'])
访问Value第一"index"
领域,例如:
var idx0 = JSON.parse(json)['trial-data'][0]['trial']['index']
请定义_ “这行不通” _。怎么了?你得到JavaScript错误?如果是这样,你得到了什么? – icza
如果我做'console.log(ev.detail.response)'我得到json作为字符串,但如果我尝试做'console.log(ev.detail.response ['trial-data'])'我得到了undefined ,所以这意味着'ev.detail.response'不会返回一个数组 – Dede