2

我是backbone.js 的新手,我已经阅读了类似问题的其他解决方案,但仍然无法让我的示例正常工作。我有一个基本的 rails api,它从下面的 url 返回一些 JSON,我正在尝试通过一个backbone.js 前端访问。由于它们是不同的服务器,我认为我需要使用“jsonp”请求。我目前正在通过覆盖我的骨干集合中的同步功能来做到这一点。

API 网址: http: //guarded-wave-4073.herokuapp.com/api/v1/plans.json

sync: function(method, model, options) {
    options.timeout = 10000;
    options.dataType = 'jsonp';
    options.url = 'http://guarded-wave-4073.herokuapp.com/api/v1/plans.json'
    return Backbone.sync(method, model, options);
}

为了测试这一点,我在我的 chrome 控制台中使用“plans = new Plans()”创建了一个新的“plans”集合,然后使用“plans.fetch()”来尝试获取 JSON。

当我之后调用 plan.models 时,我仍然有一个空数组,并且从 plan.fetch() 返回的对象似乎没有包含任何 json 数据。

有什么想法我哪里出错了吗?

4

3 回答 3

3

I have had the same problem before. You should not have to override your sync method.

Taken from Stackoverflow Answer

"The JSONP technique uses a completely different mechanism for issuing HTTP requests to a server and acting on the response. It requires cooperating code in the client page and on the server. The server must have a URL that responds to HTTP "GET" requests with a block of JSON wrapped in a function call. Thus, you can't just do JSONP transactions to any old server; it must be a server that explicitly provides the functionality."

Are you sure your server abides to the above? Test with another compatible jsonp service (Twitter) to see if you receive results?

于 2012-10-03T14:40:13.053 回答
0

您是否也尝试过覆盖 fetch 方法?

于 2012-10-01T15:46:19.650 回答
0

您应该添加?callback=?到您的 api url 以启用 jsonp

于 2012-12-20T11:03:59.553 回答