0

我正在使用以下咖啡脚本代码从我的 Rails api 中检索 json 数据,解析 json 并返回对象数组。

 result = Lungo.Service.get('http://localhost:3000/lists.json')
 lists = JSON.parse(result.response).lists

我收到此错误:JSON Parse error: Unexpected 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
4

1 回答 1

1

Lungo.Service方法默认是异步的,所以.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');
于 2013-07-16T23:01:40.963 回答