Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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
Javascript Can';无法从主干网中的REST调用获取数据:未捕获类型错误:无法读取属性';长度';未定义的_Javascript_Json_Rest_Backbone.js_Jsonp - Fatal编程技术网

Javascript Can';无法从主干网中的REST调用获取数据:未捕获类型错误:无法读取属性';长度';未定义的

Javascript Can';无法从主干网中的REST调用获取数据:未捕获类型错误:无法读取属性';长度';未定义的,javascript,json,rest,backbone.js,jsonp,Javascript,Json,Rest,Backbone.js,Jsonp,我在使用主干从REST端点检索json数据时遇到问题。它将对整个json源代码进行console.log记录,但为json输出中的实际值提供了一个“uncaughtTypeError:cannotreadproperty'length'of undefined”错误。我可以使用对REST端点的直接AJAX调用按需检索数据,如下所示: $.ajax({ async: false, url: "http://myajaxcall.com/articles/featured",

我在使用主干从REST端点检索json数据时遇到问题。它将对整个json源代码进行console.log记录,但为json输出中的实际值提供了一个“uncaughtTypeError:cannotreadproperty'length'of undefined”错误。我可以使用对REST端点的直接AJAX调用按需检索数据,如下所示:

$.ajax({
    async: false,
    url: "http://myajaxcall.com/articles/featured",
    type: "GET",
    headers: { "Accept": "application/json;odata=verbose" },
    success: function (data) {
        $.each(data.aside, function (index, value) {
            console.log(value.headLine);
        });
    }
            });
但我无法获取相同数据的主干。我到底哪里做错了

    var featuredArticle = Backbone.Model.extend({
    defaults: {
        id: '',
        headLine: '',
        snippet: '',
        fullStory: '',
        location: '',
        nsfw: '',
        category: '',
        relatedArticleIds: '',
        hasVideoPlaceholder: '',
        numberOfImages: ''
    }
});
var featuredArticles = Backbone.Collection.extend({
    model: featuredArticle,
    url: 'http://myajaxcall.com/articles/featured'
});

var articleView = Backbone.View.extend({
    tagName: 'ul',
    render: function () {
        var that = this;
        var getfeaturedArticles = new featuredArticles();
        getfeaturedArticles.fetch({
            dataType:"json",
        success: function(data) {
            console.log(getfeaturedArticles);
            $.each(data.aside, function (index, value) {
                console.log(value.headline);
                $(that.el).append('<li>' + value.headLine + '</li>');
            });
        }
        })

        return this;
    }
});
var articles = new articleView();
$("body").append(articles.render().el);
var featuredArticle=Backbone.Model.extend({
默认值:{
id:“”,
标题:“,
代码段:“”,
完整故事:'',
位置:“”,
nsfw:“”,
类别:“”,
RelatedArticleId:“”,
hasvideo占位符:“”,
numberOfImages:'
}
});
var featuredArticles=Backbone.Collection.extend({
型号:featuredArticle,
网址:'http://myajaxcall.com/articles/featured'
});
var articleView=Backbone.View.extend({
标记名:“ul”,
渲染:函数(){
var=这个;
var getfeaturedArticles=新的featuredArticles();
getfeaturedArticles.fetch({
数据类型:“json”,
成功:功能(数据){
控制台日志(getfeaturedArticles);
$.each(数据、函数(索引、值){
console.log(value.headline);
$(that.el).append(“
  • ”+value.headLine+”
  • ); }); } }) 归还这个; } }); var articles=new articleView(); $(“body”).append(articles.render().el);
    回调应如下所示:

    success: function(model, response)  {
        console.log(response);
    }
    

    我得到了相同的错误:uncaughttypeerror:无法读取未定义的属性“length”?您是否使用chrome?您可以通过“网络”选项卡查看从服务器返回的内容。控制台日志需要的是数据参数,而不是集合对象本身。您可以提供一个记录数据参数的示例吗?它返回整个json对象。我的问题是试图从那个对象中获取一些东西,比如标题的数据。它有一个名为aside的数组,包含headline的属性。有什么线索可以解释为什么我的直接ajax调用可以实现这一点,但主干提取却不行吗?我最初查看了一下。很高兴能帮上忙。最后一个问题,你能解释一下为什么我需要函数的“模型”和“响应”吗。“Response”或“Variable”并不是单独起作用的,您不一定同时需要它们。示例中的“model”参数将对象作为数组属性返回模型,而response参数(随意调用)立即返回对象数组。如果对模型变量调用model.toJSON(),您会注意到得到的结果是相同的。再次感谢你的帮助!