Api backbone.js fetch未更新模型

Api backbone.js fetch未更新模型,api,rest,backbone.js,fetch,Api,Rest,Backbone.js,Fetch,我在这里读过其他帖子,看起来大多数时候这归结为异步获取。我不认为这是我的问题,因为1。我在fetch和2的成功回调中测试结果。我以后可以在js控制台中console.log(model.toJSON()),但它仍然没有更新 注意:我从API得到了一个很好的json响应,我可以通过在我的模型声明中添加“parse”来获取数据,如下所示 parse: function(data){ alert(data.screenname); } 这是我的代码,为什么模型没有用fetch调用更新 <

我在这里读过其他帖子,看起来大多数时候这归结为异步获取。我不认为这是我的问题,因为1。我在fetch和2的成功回调中测试结果。我以后可以在js控制台中
console.log(model.toJSON())
,但它仍然没有更新

注意:我从API得到了一个很好的json响应,我可以通过在我的模型声明中添加“parse”来获取数据,如下所示

parse: function(data){
    alert(data.screenname);
}
这是我的代码,为什么模型没有用fetch调用更新

<html>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script src="vendor/components/underscore/underscore-min.js"></script>
    <script src="vendor/components/backbone/backbone-min.js"></script>
  </head>
  <body>
    Hello
<script>
$.ajaxSetup({
  beforeSend: function(xhr){
    xhr.setRequestHeader("Authorization", "Basic " + window.btoa("username" + ":" + "password"));
  }
});

var User=Backbone.Model.extend({
  parse: function(data){
    alert(data.screenname);
  },
  urlRoot: 'http://api.myapi.com/user'
});

var user=new User({id:'1'});

user.fetch({
  success: function(collection, response, options){
    console.log(response);
    console.log(user.toJSON());
  }
});
</script>
</body>
</html>
下面是来自我的api的响应头

HTTP/1.1 200 OK
Date: Tue, 04 Feb 2014 18:31:41 GMT
Server: Apache/2.2.24 (Unix) DAV/2 PHP/5.5.6 mod_ssl/2.2.24 OpenSSL/0.9.8y
X-Powered-By: PHP/5.5.6
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Authorization, Origin, X-Requested-With, Content-Type, Accept
Set-Cookie: PHPSESSID=pj1hm0c2ubgaerht3i5losga4; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 139
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8

您已经重写了
parse()
方法,实际上什么也不做。它应该返回要在模型上设置的所有属性;您没有返回任何内容,因此,模型上没有设置任何内容

应该是这样的

var User=Backbone.Model.extend({
  parse: function(data){
    alert(data.screenname);
    return data; //all attributes in data will be set on the model
  },
  urlRoot: 'http://api.myapi.com/user'
});

你能把从电话里得到的回复包括进来吗server@kay.one,我添加了从服务器得到的响应,您知道必须输入
返回数据
在您对
parse
的重写中,对吗?@McGarnagle,我不知道我必须重写parse才能从
fetch()
将数据获取到模型中。我是个新手,你能解释一下吗。可能是一个关于
返回数据的示例。谢谢你的例子很有效:
var User=Backbone.Model.extend({
  parse: function(data){
    alert(data.screenname);
    return data; //all attributes in data will be set on the model
  },
  urlRoot: 'http://api.myapi.com/user'
});