我使用以下coffeescript代码从我的Rails api中检索json数据,解析json并返回对象数组。
result = Lungo.Service.get('http://localhost:3000/lists.json')
lists = JSON.parse(result.response).lists
我收到此错误: JSON解析错误:意外的EOF
当我从控制台执行代码时,一切正常。代码被解析。但是,似乎在我的代码中,虽然result
确实设置为XMLHttpRequest,但它的响应属性(包含我的json格式的数据)在访问时是空的:result.response
。
我在谷歌搜索,但没有解决方案解决了我的问题。
result = Lungo.Service.get(url)
:
result = XMLHttpRequest
|
___>
constructor: XMLHttpRequestConstructor
onabort: null
onerror: null
onload: null
onloadend: null
onloadstart: null
onprogress: null
onreadystatechange: function () {if(h.readyState===4){clearTimeout(r);return c(h,f)}}
readyState: 4
response: "{"lists":[ *data removed for brevity*]}"
responseText: "{"lists":[ *data removed for brevity*]}"
responseType: ""
responseXML: null
status: 200
statusText: "OK"
upload: XMLHttpRequestUpload
withCredentials: false
__proto__: XMLHttpRequestPrototype
答案 0 :(得分:1)
Lungo.Service
methods是异步的,因此.get()
会在收到result
之前返回result.response
。
它仍然可以出现在日志中,因为某些日志也是异步的,因此在它可用之前,它们可能不会尝试读取该值。
您可以使用“回调函数”参数来指定response
一旦可用,该怎么办。您还可以将'json'
指定为“ Mime-type 。”
Lungo.Service.get('http://localhost:3000/lists.json', function (response) {
var lists = response.lists;
// use `lists` here
}, 'json');