Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json Backbone.js在集合上使用fetch()返回无模型、200 OK和空响应_Json_Backbone.js_Fetch - Fatal编程技术网

Json Backbone.js在集合上使用fetch()返回无模型、200 OK和空响应

Json Backbone.js在集合上使用fetch()返回无模型、200 OK和空响应,json,backbone.js,fetch,Json,Backbone.js,Fetch,我正在使用Backbone.js构建一个注释对象。 集合中的URL返回如下所示的json: {'type': 'comment', 'data': [{"body": "commment number 1!", "create_dt": 1343166264000, "comment_id": 1, "depth": 0, "user": {"sid": "1"

我正在使用Backbone.js构建一个注释对象。 集合中的URL返回如下所示的json:

        {'type': 'comment', 
        'data': [{"body": "commment number 1!", 
                "create_dt": 1343166264000, 
                "comment_id": 1, "depth": 0, 
                "user": {"sid": "1", 
                    "uid": "1", 
                    "name": "Amie C", 
                    "level": "2"}, 
                "sid": 1
                }, 
                {"body": "commment number 1-1!", 
                "create_dt": 1343166361000, 
                "comment_id": 4, 
                "depth": 1, 
                "user": {"sid": "1", 
                        "uid": "1", 
                        "name": "lila M", 
                        "level": "2"}, 
                "sid": 1}
                }]
        }
    <!DOCTYPE html>
    <head>
      <meta charset="utf-8">
        <title>Share</title>
        <link rel="stylesheet" href="share.css" type="text/css"/>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script src="http://documentcloud.github.com/underscore/underscore-min.js"></script>
        <script src="http://backbonejs.org/backbone-min.js"></script>​
        <script src="js/comment.js"></script>
    </head>
    <body>
        <div class="main_app">
            <div class="comments_container"></div>
        </div>
    </body>
    </html>
url在浏览器中工作,我可以看到所有json返回。然而,我遇到的问题是加载comment.js时没有返回数据。我会看到一个红色的Get请求,它说200 OK,并且在响应中没有主体。我的模型的长度也是0

非常感谢您的光临

这里是comment.js:

    //default comment model
    var Comment = Backbone.Model.extend({
        defaults: {
            body: "",
            create_dt: null,
            comment_id: null,
            depth: null,
            user: null,
            sid: null
        }
    });

    //instaitiate a new comment
    var comment = new Comment;

    //default event view
    var CommentView = Backbone.View.extend({
        tagName: "li",
        className: "comment",
        initialize: function(){
            this.render();
        },
        render: function(){
            $(this.el).html(this.model.toJSON());
            return this;
        }
    });


    //default comments collection
    var Comments = Backbone.Collection.extend({
        model: Comment,
        initialize: function(){
        },
        url:"http://127.0.0.1/test/objects/json/comments.json",
        parse: function(resp) {
            return resp.data;
        }
    });

    //default eventsview for events collection's view
    var CommentsView = Backbone.View.extend({
        tagName: "ul",
        className:"comments",
        intialize: function(){
            this.render();
        },
        render: function(){
            _.each(this.collection.models, function(comment){
                //init the CommentView and passed in its model here
                var commentView = new CommentView({model: comment});
                $(this.el).prepend(commentView.render().el)
            }, this);

            return this;
        }
    });

    //instantiate new events collection
    var comments = new Comments;
    var commentsView = new CommentsView({collection: comments});


    //on the new events collection, we fetch the data from URL
    comments.fetch({
        error:function(response, xhr){
            console.log(response);
            console.log(xhr)
        },
        success:function(){
            console.log("success");
            $('.comments_container').html(commentsView.render().el);
        }
    });
html如下所示:

        {'type': 'comment', 
        'data': [{"body": "commment number 1!", 
                "create_dt": 1343166264000, 
                "comment_id": 1, "depth": 0, 
                "user": {"sid": "1", 
                    "uid": "1", 
                    "name": "Amie C", 
                    "level": "2"}, 
                "sid": 1
                }, 
                {"body": "commment number 1-1!", 
                "create_dt": 1343166361000, 
                "comment_id": 4, 
                "depth": 1, 
                "user": {"sid": "1", 
                        "uid": "1", 
                        "name": "lila M", 
                        "level": "2"}, 
                "sid": 1}
                }]
        }
    <!DOCTYPE html>
    <head>
      <meta charset="utf-8">
        <title>Share</title>
        <link rel="stylesheet" href="share.css" type="text/css"/>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script src="http://documentcloud.github.com/underscore/underscore-min.js"></script>
        <script src="http://backbonejs.org/backbone-min.js"></script>​
        <script src="js/comment.js"></script>
    </head>
    <body>
        <div class="main_app">
            <div class="comments_container"></div>
        </div>
    </body>
    </html>

分享
​

我认为问题在
CommentView
中:

    render: function(){
        $(this.el).html(this.model.toJSON());
        return this;
    }
this.model.toJSON()
不返回字符串,因此当您将其直接放入html中时,它不会显示

请尝试以下方法:

        $(this.el).html(JSON.stringify(this.model));

可能原因:1。响应不是内容类型
application/json
,2。您有跨域问题。有关您的响应的更多详细信息可能会有所帮助,例如标题。如果您在OSX中工作,可以尝试
curl-I
。在请求/响应时刻,浏览器控制台调试的屏幕截图也会有所帮助。下面的答案对你有用吗?如果是,请将其标记为已接受。如果没有,请告诉我出了什么问题。谢谢