从具有主干的外部API检索JSON

时间:2012-10-01 05:49:31

标签: ajax json api backbone.js

我是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.fetch()”创建一个新的“计划”集合,尝试获取JSON。

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

我出错的任何想法?

3 个答案:

答案 0 :(得分:3)

我之前遇到过同样的问题。您不必重写同步方法。

取自Stackoverflow Answer

“JSONP技术使用完全不同的机制向服务器发出HTTP请求并对响应进行操作。它需要在客户端页面和服务器上配合代码。服务器必须具有响应HTTP的URL”GET “在函数调用中包含JSON块的请求。因此,您不能只对任何旧服务器执行JSONP事务;它必须是明确提供功能的服务器。”

您确定您的服务器遵守上述规定吗?使用其他兼容的jsonp服务(Twitter)进行测试,看看是否收到了结果?

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您应该将?callback=?添加到您的api网址以启用jsonp