Backbone 来自 RESTful json API 的 JSONP 调用无效

Backbone JSONP call from RESTful json API not working

我有一个 RESTful json API,我需要在我的前端 Backbone 站点中访问它。

所以,我这样做了:

/* Goal collection */
var GoalCollection = Backbone.Collection.extend({       
    model: GoalModel,
    url: "http://staging.api.hiwarren.com:8080/api/v1/goals/?callback=?",
    sync: function(method, collection, options) {
        options.dataType = "jsonp";
        // options.timeout = 10000;
        return Backbone.sync(method, collection, options);
    },
    parse: function(response) {
        return response.results;
    }
});
/* View for the goal collection */
var GoalCollectionView = Backbone.View.extend({

    tagName: 'ul',

    initialize: function(callback){
        var that = this;

        _.bindAll(this, 'render');
        that.collection = new GoalCollection();
        that.collection.bind('reset', this.render)

        that.collection.fetch({
            dataType: 'jsonp',
            success: function(collection, response){
                that.render();
                if(callback) callback(that);
            },
            error: function(collection, response){
                throw new Error("Goal fetch error - " + response.statusText);
            }
        });
    },

    render: function(){
        this.collection.each(function(goal){
            var goalView = new GoalView({ model: goal });
            this.$el.append(goalView.render().el);
        }, this);

        return this;
    }
});

我正在尝试使用 JSONP,因为它是一个不同的域。正如您在我的代码中看到的那样,我已经遵循了与此类似问题的答案,但它不起作用。

相反,我收到此错误消息:

Uncaught Error: Goal fetch error - load
  Backbone.View.extend.initialize.that.collection.fetch.error
  options.errorjquery.js:3094 jQuery.Callbacks.fire
  jQuery.Callbacks.self.fireWithjquery.js:8261 done
  jQuery.ajaxTransport.send.jQuery.prop.on.callback
  jQuery.event.dispatchjquery.js:4116 jQuery.event.add.elemData.handle

我做错了什么?我怎样才能使这项工作?

您确定您尝试访问的域支持 jsonp 吗?某些站点仅启用 json 格式。