dojo具有约束力.网格到rest式服务,并通过jsonreststore进行身份验证

binding dojo.grid to restful service with authentication via jsonreststore

本文关键字:jsonreststore 身份验证 服务 约束力 网格 rest dojo      更新时间:2023-09-26

我找了一会儿这个问题,但没有找到太多关于它的信息。

在我的javascript应用程序中,我尝试通过jsonreststore和dgrid来可视化我的restful后端数据。

这就是我目前得到的:

    <script>
        function getRequest(args) {
            return {
                url: 'http://myworkingapiwithevents/events',
                handleAs: 'json',
                sync: false,
                headers: {
                    'Authorization': 'Basic HriB5jsHUib2K='
                }
            }
        }
        require(["dojo/store/JsonRest", "dojo/rpc/JsonService"], function (JsonRest, JsonService) {            
            service = new JsonService('http://myworkingapiwithevents/events', true /*isJson*/, undefined /*schema*/, getRequest);
            myStore = new JsonRest({ service: service });
        });
        require(["dojox/grid/DataGrid", "dojo/data/ObjectStore", "dojo/domReady!"
        ], function (DataGrid, ObjectStore) {
            grid = new DataGrid({
                store: dataStore = new ObjectStore({ objectStore: myStore }),
                structure: [
                    { name: "Event", field: "name", width: "200px" }
                ]
            }, "grid3");
            grid.startup();
        });
    </script>

一开始,我使用硬编码的base64授权,它应该适用于我的后端服务。使用getRequest方法,我初始化了我的服务"workaround",我的jsonreststore可以用它来处理授权。

在firebug (Chrome)我得到以下错误:

ErrorCtor {stack: "Error: Unable to load http://myworkingapiwithevents/ev... p://localhost:52894/Scripts/dojo/dojo.js:1094:43)", message: "Unable to load http://myworkingapiwithevents/events status: 0", response: Object, status: 0, responseText: ""…}
Error {popStackFrame: function} "Error: Unable to load SMD from http://myworkingapiwithevents/events

会不会是跨域问题?我知道我的后台服务支持跨域

你不需要使用dojo/rpc/JsonService。试试这个:

require(["dojo/store/JsonRest", "dojox/grid/DataGrid", "dojo/data/ObjectStore", "dojo/domReady!"], function (JsonRest, DataGrid, ObjectStore) {
        var restStore = new JsonRest({
            target : 'http://myworkingapiwithevents/events',
            headers: {'Authorization': 'Basic HriB5jsHUib2K='}
        });
        var dataStore = new ObjectStore({ objectStore : restStore });
        grid = new DataGrid({
            store: dataStore,
            structure: [
                { name: "Event", field: "name", width: "200px" }
            ]
        }, "grid3");
        grid.startup();
});