【问题标题】:Backbone.js Uncaught TypeError: Cannot use 'in' operator to search for 'id' in etc to copy json dataBackbone.js Uncaught TypeError:无法使用“in”运算符在等中搜索“id”以复制json数据
【发布时间】:2012-09-03 15:19:50
【问题描述】:

我有一个backbone.js 错误:

未捕获的类型错误:无法使用 'in' 运算符搜索 'id' in {"websiteID":"2","title":"titre site 2"} 主干-min.js:9

我正在尝试将 json 数据(从 ajax 接收)复制到模型的实例中。

我该如何解决这个问题?

我的代码是:

var Website = Backbone.Model.extend({
    // set default json data in the website:
    defaults: {"websiteID":"1","title":"default title"}
});

var website = new Website();

function UpdateWebsiteBasedOnDBData() {
  this.url = 'script.php';
}

UpdateWebsiteBasedOnDBData.prototype.readData = function(dataToGet) {
        return $.ajax({
        type: "GET",
        url: this.url,
        data: dataToGet,
        context: this,
        success: this.onSuccess
      });
};

UpdateWebsiteBasedOnDBData.prototype.onSuccess = function(data) {
    website.set(data);
    alert( website.get("websiteID") );
};

$(document).ready(function() {
    var updateWebsiteBasedOnDBData = new UpdateWebsiteBasedOnDBData();
    updateWebsiteBasedOnDBData.readData({"websiteID": 2});
});

script.php 返回正确的 json:

{"websiteID":"2","title":"网站名称 2"}


更新

我仍然需要检查,但我强烈怀疑我的 json 实际上是无效的。 根本原因可能是(仍有待验证)我的 php 脚本的字符集。

相关:Weird character at start of json content type

【问题讨论】:

  • 即使我将data 包装为字符串,我也无法重现问题check the jsFiddle。你能分叉我的 jsFiddle 并重现这个问题吗? 您的代码的哪一行会产生错误? (按照错误回溯,直到找到一行代码)
  • 正如@JayC 所说...您使用的是哪个版本的 Backbone?
  • @fguillen 感谢 jsfiddle。我正在使用 underscore.js/1.1.4 和主干.js/0.3.3。但我怀疑我的 Json 数据有问题。我认为我的 PHP 脚本弄乱了我的 json。
  • 看在上帝的份上,更新! :) underscore.js/1.3.3backbone.js/0.9.2 如果不是,你会发现自己独自面对你的问题
  • @fguillen 哇,我需要更新。谢谢!

标签: json backbone.js


【解决方案1】:

我只是猜测你必须为你的模型命名身份字段。

http://documentcloud.github.com/backbone/#Model-idAttribute

但我不太确定您发布的代码是否存在问题。我过去使用过没有 id 的模型,IIRC,对于某些模型,我只想实现只读视图/搜索功能,而不是 CRUD 功能,并且身份在这些场景中并不重要......(这是之前但是,当前版本的 Backbone.js,我可能完全不在乎这个......)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-02
    • 2015-02-19
    • 2015-10-12
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2014-07-09
    • 2016-11-20
    相关资源
    最近更新 更多