在jsfiddle上使用Backbone模拟ajax请求

时间:2013-02-04 22:07:23

标签: backbone.js jsfiddle

我正在尝试设置我正在jsfiddle上制作的应用程序的演示,以便获得问题的帮助。它需要进行ajax调用。 jsFiddle有一个echo api(例如http://jsfiddle.net/zalun/yVbYQ/)来模拟ajax调用,但是我无法弄清楚如何将它集成到骨干模型或集合中,如下所示。这是骨干模型的小提琴...... http://jsfiddle.net/mjmitche/RRXnK/117/如果有帮助的话。

var Game = Backbone.Model.extend({

    initialize: function () {

    },
    getStuff: function () {
        var _this = this;

        $.ajax({
            url: "http://search.twitter.com/search.json?q=from:realDonaldTrump",
            type: "GET",
            success: function (response) {
               alert(response.results[0]);
                alert("success");
               _this.trigger("gameStartedEvent", response);
            },
            error: function (r) {
                alert("error");
                alert(r);

            }
        });

    }

});

var game = new Game();
game.getStuff();

jsfiddle mock ajax call

的一个例子
new Request.JSONP({
    url: 'http://jsfiddle.net/echo/jsonp/',
    data: {
        tweet1: 'some text',
        tweet2: 'another text'
        tweet3: 'blah blah'
    },
    onSuccess: function(response) {
        show_response(response, $('post'));
    }
}).send();

show_response = function(obj, result) {
    $H(obj).each(function(v, k) {
        new Element('li', {
            text: k + ': ' + v
        }).inject(result);
    });
    result.highlight();
};

1 个答案:

答案 0 :(得分:0)

JSFiddle echo API不支持实现Backbone CRUD所需的HTTP操作范围。使用POST /echo,您可以模拟创建新模型,但这就是它。

相反,请考虑使用autoRespond选项的sinon.js fakeServer来模拟客户端上的服务。这将需要更多的工作,但会提供更“真实”的模拟。

FWIW,对于正常的CRUD用例,我建议Backbone.localStorage。它是Backbone.sync的替代品,因此只需将其作为资源包含在内,将集合的url属性更改为localStorage,即可开展业务。但是,这对你不起作用,因为你手动制作AJAX请求,所以你需要降低。