【问题标题】:Fetch data from asp.net using backbone使用主干从 asp.net 获取数据
【发布时间】:2013-06-07 02:07:11
【问题描述】:
    $.ajax({
    type: "POST",
    url: "Home.aspx/loadSB",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
        for (i = 0; i < msg.d.length; i++) {
            $('#sidebar ul').append('<li class="inactive"><a>' + msg.d[i].Title + ' </a></li>');
        }
    }
});

我经历了这个 https://github.com/kjbekkelund/writings/blob/master/published/understanding-backbone.mdhttps://gist.github.com/ryandotsmith/1655019 教程并创建如下所示的主干,但由于模型没有从 asp.net 获取数据,因此效果不佳,哪一部分出错了?我还是新手

Menu = Backbone.Model.extend({
    parse: function (data) { return data; }
});

MenuCol = Backbone.Collection.extend({
    model: Menu,
    url: "Home.aspx/loadSB",
    parse: function (response) { return response.rows; }
});

MenuView = Backbone.View.extend({
    initialize: function () {
        this.collection.on('add', this.appendMenu, this);
    },
    appendMenu: function (msg) {
        for (i = 0; i < msg.d.length; i++) {
            this.$('ul').append('<li class="inactive"><a>' + msg.d[i].Title + ' </a></li>');
        }
    }
});

 var mc = new MenuCol();
 //mc.fetch();
 //Update1:
 new MenuView({ el: $('#sidebar'), collection: mc });

更新 1: 我玩过 fetch,但仍然无法正常工作,

Menu = Backbone.Model.extend({});

MenuCol = Backbone.Collection.extend({
    model: Menu,
    url: "Home.aspx/loadSB",
});

var test = new MenuCol();
test.fetch();

它没有返回我想要的数据,而是显示了我屏幕的界面

如果我使用没有主干的 jquery.ajax,它会将 json 数据返回给我,哪一部分出错了?任何指南都会很棒

更新 2:

好的,我已经更改了“fetch”,现在我可以看到传入主干的 json 数据

var test = new MenuCol();
test.fetch({ type: 'POST', contentType: "application/json; charset=UTF-8" });

【问题讨论】:

  • 您的mc.fetch 成功了吗?我没有看到您实例化视图的任何地方,您在任何地方都有new MenuView({ collection: mc }) 吗?
  • 我曾尝试使用 fetch 然后使用 new MenuView,但仍然没有成功,我对骨干还是新手,所以仍在弄清楚如何实际获取模型来存储来自 asp.net 的数据传递
  • 你仍然需要一个mc.fetch() 在某个地方,它将从服务器中提取数据。 fetch 是一个 AJAX 调用,因此您将处理所有常见的异步问题,但绑定到集合事件应该可以解决大部分问题。
  • 好的,我试试,虽然不知道在哪里添加,尝试浏览不同的网页来解决,谢谢
  • 模型返回值为0,还是解不开

标签: asp.net jquery backbone.js


【解决方案1】:

好的,我终于解决了这个问题,

define(['jquery', 'underscore', 'backbone'], function () {
Menu = Backbone.Model.extend({});

MenuCol = Backbone.Collection.extend({
    model: Menu,
    url: "Home.aspx/loadSB",
});

MenuView = Backbone.View.extend({

    initialize: function () {
        this.collection.on('add', _.bind(this.AppendMenu, this));
    },
    AppendMenu: function (msg) {
        var feed = JSON.parse(JSON.stringify(msg));
        for (var i = 0; i < feed.d.length; i++) {
            this.$('ul').append('<li class="inactive"><a>' + feed.d[i].Title + ' </a></li>');
        }
    }
});

var test = new MenuCol();
test.fetch({ type: 'POST', contentType: "application/json; charset=UTF-8" });
new MenuView({ el: $('#sidebar'), collection: test })

});

通过将获取类型更改为“POST”和 contentType:“application/json;charset=UTF-8”,最后我设法用我想要的数据填充网络

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-06
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多