JSON解析错误:意外的EOF

时间:2013-07-16 22:40:15

标签: javascript ruby-on-rails

我使用以下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

1 个答案:

答案 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');