backbone.js JSON解析错误

时间:2013-05-04 01:49:47

标签: jquery ajax json backbone.js cors

好吧,我是Backbone.js的新手,我只是想让一个简单的集合提取工作。

在服务器端,我发送了以下JSON我已经确认这在响应正文中出现了:

[{"id":1,"user_id":1,"last_name":"Smith","first_name":"Bob","date_of_birth":"1980-01-06T05:00:00Z","created_at":"2013-04-26T00:50:00Z","updated_at":"2013-04-26T00:50:00Z"},{"id":2,"user_id":1,"last_name":"Smith","first_name":"Roger","date_of_birth":"1985-01-01T05:00:00Z","created_at":"2013-04-27T04:00:00Z","updated_at":"2013-04-27T04:00:00Z"}]

这传递了JSONLint

我的服务器运行在localhost:8080在Jetty(Scala / Scalatra)中,我的客户端服务器是在运行在localhost:8083的nginx服务器上运行的。我认为我已经正确地使用了CORS支持。在任何情况下,我都会得到200响应以及我的JSON。

请求看起来像这样(Opera dev控制台):

GET /api/persons HTTP/1.1
User-Agent: Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.15
Host: localhost:8080
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate
Referer: http://localhost:8083/
Connection: Keep-Alive
Accept: */*
X-Requested-With: XMLHttpRequest
Origin: http://localhost:8083

回复中的标题是:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://localhost:8083
Access-Control-Allow-Credentials: true
Content-Type: application/json;charset=UTF-8
Server: Jetty(8.1.8.v20121106)

这是我的fetch错误回调的绊倒。所以,接下来我写了一个常规的jquery $ .getJSON(),然后是$ .ajax形式的相同req。没有运气。

我终于在$ .ajaxSetup(哦,coffeescript,btw)中添加了一些检查:

$.ajaxSetup 
  error: (jqXHR, exception) ->
    if jqXHR.status == 0
      alert('Not connect.\n Verify Network.')
    else if jqXHR.status == 404
      alert('Requested page not found. [404]')
    else if jqXHR.status == 500
      alert('Internal Server Error [500].')
    else if exception == 'parsererror'
      alert('Requested JSON parse failed.')
    else if exception == 'timeout'
      alert('Time out error.')
    else if exception == 'abort'
      alert('Ajax request aborted.')
    else
      alert('Uncaught Error.\n' + jqXHR.responseText)

正在触发'parsererror'。所以,呵呵。我错过了一些明显的东西,我知道。

1 个答案:

答案 0 :(得分:2)