parseJSON(response)为null

时间:2013-01-13 07:04:54

标签: backbone.js

我有一个成功服务器请求的Backbone模型。回调是使用骨干的触发器方法触发关联视图中的事件,并将其从服务器请求传递解析的json响应作为触发器方法的第二个参数,如骨干文档中所述。在视图中,事件触发render方法,但视图中的响应对象为null。它抛出了这个错误

Uncaught TypeError: Cannot read property 'word' of null 

任何人都可以看到我可能做错了吗?

来自模型的服务器请求

  new: function() {
      var _this = this;
       console.log("new function of model"); 

      $.ajax({
        url: "/gamestart",
        type: "GET",
        success: function(response) {
          console.log(response);
          var json = $.parseJSON(response);

          _this.set({lost: false});
          _this.set({win: false});
          _this.trigger("gameStartedEvent", json);
        }
      })
    },

视图的初始化方法中触发render方法呈现响应的事件

this.model.on("gameStartedEvent", this.render, this);

响应为空的呈现方法

render: function(response) {
      $("#hint").show();
      console.log(response); 
      var html = this.template({characters: response.word});
      this.el.hide();
      this.el.html(html).show();
    },

注意,如果重要,则使用模型

实例化视图
var word_view = new WordView({model: game})

更新

实际上错误发生在这里。响应成功返回但我正在解析它。检查控制台时,变量json为null。你能看出我做错了吗?

 var json = $.parseJSON(response);
 console.log(json)

响应

Object {word: Array[6]}
word: Array[6]
__proto__: Object

1 个答案:

答案 0 :(得分:0)

实际上没有必要在响应对象上调用parseJSON。我可以直接从响应对象获取单词属性,所以我只是将响应对象作为第二个参数传递给触发器,并在视图中调用response.word

 $.ajax({
        url: "/gamestart",
        type: "GET",
        success: function(response) {
          console.log(response.word);
          var json = $.parseJSON(response);    ####unnecessary to parseJSON here
          console.log(json);

          _this.set({lost: false});
          _this.set({win: false});
          _this.trigger("gameStartedEvent", response);
        }
      })
    },