Extjs Ext 4中的Ext.grid.Panel未从Ext.Direct代理存储加载数据
我已经排除了此代码中的所有异常。但是,我的代理中的数据没有呈现在我的Ext.grid.Panel小部件中。在下面,您将看到页面呈现时的不同组件。我没有包括Ext.Direct代理的服务器端堆栈代码 HTML:Extjs Ext 4中的Ext.grid.Panel未从Ext.Direct代理存储加载数据,extjs,grid,extjs4,rendering,ext-direct,Extjs,Grid,Extjs4,Rendering,Ext Direct,我已经排除了此代码中的所有异常。但是,我的代理中的数据没有呈现在我的Ext.grid.Panel小部件中。在下面,您将看到页面呈现时的不同组件。我没有包括Ext.Direct代理的服务器端堆栈代码 HTML: <!doctype html> <html> <head> <meta charset="utf-8"> <title>Ext Direct Grid Integration</title> <link rel=
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Ext Direct Grid Integration</title>
<link rel="stylesheet" type="text/css" href="http://www.rasc.ch/extjs-4.1.3/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="http://www.rasc.ch/extjs-4.1.3/examples/shared/example.css" />
<script src="http://www.rasc.ch/extjs-4.1.3/ext-all-dev.js"></script>
<script type="text/javascript" src="../directProxy.ashx"></script>
<script type="text/javascript" src="XGrid_writer.js"></script>
<script type="text/javascript" src="XGrid.js"></script>
<!--<script src="../api-debug.js?group=turnover"></script>-->
<!--<script src="api-debug.js"></script>-->
</head>
<body>
<h1>Ext Direct Grid Integration</h1>
<p>
Source code: <a href="XGrid.js">XGrid.js</a>
</p>
<div id="loading-mask" style=""></div>
<div id="loading">
<div class="loading-indicator"><img src="../extjs/examples/shared/icons/fam/add.png" width="32" height="32" style="margin-right:8px;float:left;vertical-align:top;"/>Ext Writer <br /><span id="loading-msg">Loading ...</span></div>
</div>
</body>
</html>
Ext.app.REMOTING_API = {
"type": "remoting",
"id": "1",
"url": "../directRouter.ashx",
"actions": {
"CallTypes": [{
"name": "Echo",
"len": 1,
"formHandler": false
}, {
"name": "GetTime",
"len": 0,
"formHandler": false
}, {
"name": "UploadHttpRequestParam",
"len": 1,
"formHandler": true
}, {
"name": "UploadNamedParameter",
"len": 1,
"formHandler": true
}, {
"name": "SaveMethod",
"len": 3,
"formHandler": false
}, {
"name": "SaveMethod_Form",
"len": 1,
"formHandler": true
}, {
"name": "DateSample",
"len": 2,
"formHandler": false
}],
"TreeAction": [{
"name": "getChildNodes",
"len": 2,
"formHandler": false
}],
"CRUDSampleMethods": [{
"name": "create",
"len": 1,
"formHandler": false
}, {
"name": "read",
"len": 1,
"formHandler": false
}, {
"name": "update",
"len": 2,
"formHandler": false
}, {
"name": "destroy",
"len": 1,
"formHandler": false
}, {
"name": "reset",
"len": 0,
"formHandler": false
}],
"CRUDSampleMethods2": [{
"name": "create",
"len": 1,
"formHandler": false
}, {
"name": "read",
"len": 1,
"formHandler": false
}, {
"name": "update",
"len": 2,
"formHandler": false
}, {
"name": "destroy",
"len": 1,
"formHandler": false
}, {
"name": "reset",
"len": 0,
"formHandler": false
}]
}
};
[{
"type": "rpc",
"name": null,
"tid": 1,
"action": "CRUDSampleMethods2",
"method": "read",
"result": {
"success": true,
"results": 3,
"data": [{
"id": "1",
"email": "email1@extjs.com",
"first": "Martin",
"last": "Späth"
}, {
"id": "2",
"email": "email2@extjs.com",
"first": "Heinz",
"last": "Erhart"
}, {
"id": "3",
"email": "email1@extjs.com",
"first": "Albert",
"last": "Einstein"
}]
},
"message": null,
"where": null,
"errorcode": 0
}]
Ext.require(['Ext.direct.*', 'Ext.data.*', 'Ext.grid.*', 'Ext.util.Format']);
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id', 'email', 'first', 'last']
});
Ext.onReady(function () {
Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
// create the Tree
Ext.define('mypanel', {
extend: 'Ext.grid.Panel',
store: {
model: 'User',
remoteSort: true,
autoLoad: true,
// sorters: [{
// property: 'email',
// direction: 'ASC'
// }, {
// property: 'first',
// direction: 'DESC'
// }],
proxy: {
type: 'direct',
directFn: CRUDSampleMethods2.read
}
},
columns: [{
dataIndex: 'email',
flex: 1,
text: 'Email'
}, {
dataIndex: 'first',
//align: 'right',
width: 120,
text: 'First'
//renderer: Ext.util.Format.usMoney
}],
height: 350,
width: 600,
title: 'User Grid',
renderTo: Ext.getBody()
});
});
Ext.onReady(function () {
Ext.Direct.addProvider(Ext.app.REMOTING_API);
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id', 'email', 'first', 'last']
});
// var reader = new Ext.data.JsonReader({ // ext 3 code
// totalProperty: 'results',
// successProperty: 'success',
// idProperty: 'id',
// root: 'data'
// }, [{
// name: 'id'
// }, {
// name: 'email',
// allowBlank: false
// }, {
// name: 'first',
// allowBlank: false
// }, {
// name: 'last',
// allowBlank: false
// }]
// );
var reader = Ext.create('Ext.data.JsonReader', { // ext 4 code
totalProperty: 'results',
successProperty: 'success',
idProperty: 'id',
root: 'data'
});
//var writer = new Ext.data.JsonWriter({ // convert from ext 3 to ext 4
var writer = Ext.create('Ext.data.JsonWriter', {
returnJson: false,
writeAllFields: true
});
//var store = new Ext.data.DirectStore({
var store = Ext.create('Ext.data.DirectStore', {
model: 'User',
api: {
read: CRUDSampleMethods2.read,
create: CRUDSampleMethods2.create,
update: CRUDSampleMethods2.update,
destroy: CRUDSampleMethods2.destroy
},
reader: reader,
baseParams: {
dummy: 'blubb'
},
writer: writer, // <-- plug a DataWriter into the store just as you would a Reader
paramsAsHash: true,
batchSave: false,
batch: false,
prettyUrls: false,
remoteSort: true,
listeners: {
load: function (result) { },
loadexception: function () {
},
scope: this
}
});
//
var myPageSize = 10;
var userColumns = [{
header: "ID",
width: 40,
sortable: true,
dataIndex: 'id'
}, {
header: "Email",
width: 100,
sortable: true,
dataIndex: 'email'
//editor: new Ext.form.TextField({})
}, {
header: "First",
width: 50,
sortable: true,
dataIndex: 'first'
//editor: new Ext.form.TextField({})
}, {
header: "Last",
width: 50,
sortable: true,
dataIndex: 'last'
//editor: new Ext.form.TextField({})
}];
Ext.onReady(function () {
Ext.QuickTips.init();
// var userForm = new App.user.Form({
// renderTo: 'user-form',
// listeners: {
// create: function (fpanel, data) { // <-- custom "create" event defined in App.user.Form class
// var rec = new userGrid.store.recordType(data);
// userGrid.store.insert(0, rec);
// }
// }
// });
// create user.Grid instance (@see UserGrid.js)
var userGrid = Ext.create('mypanel', {
renderTo: Ext.getBody(),
store: store,
columns: userColumns,
//bbar: new Ext.PagingToolbar({
bbar: Ext.create('Ext.PagingToolbar', {
store: store, // grid and PagingToolbar using same store
displayInfo: true,
pageSize: myPageSize,
prependButtons: true,
items: [
'text 1'
]
}),
listeners: {
rowclick: function (g, index, ev) {
var rec = g.store.getAt(index);
//userForm.loadRecord(rec);
},
destroy: function () {
//userForm.getForm().reset();
}
}
});
setTimeout(function () {
Ext.get('loading').remove();
Ext.fly('loading-mask').fadeOut({
remove: true
});
store.load({
params: {
start: 0, // specify params for the first page load if using paging
limit: myPageSize,
foo: 'bar'
}
});
}, 250);
});
}); // onready
var store = Ext.create('Ext.data.Store', {
model: 'User',
//fields: ['id', 'email', 'first', 'last'],
proxy: {
type: 'direct',
directFn: CRUDSampleMethods2.read,
reader: {
root: 'data'
}
}
});
代理数据(又名路由器呈现JSON):
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Ext Direct Grid Integration</title>
<link rel="stylesheet" type="text/css" href="http://www.rasc.ch/extjs-4.1.3/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="http://www.rasc.ch/extjs-4.1.3/examples/shared/example.css" />
<script src="http://www.rasc.ch/extjs-4.1.3/ext-all-dev.js"></script>
<script type="text/javascript" src="../directProxy.ashx"></script>
<script type="text/javascript" src="XGrid_writer.js"></script>
<script type="text/javascript" src="XGrid.js"></script>
<!--<script src="../api-debug.js?group=turnover"></script>-->
<!--<script src="api-debug.js"></script>-->
</head>
<body>
<h1>Ext Direct Grid Integration</h1>
<p>
Source code: <a href="XGrid.js">XGrid.js</a>
</p>
<div id="loading-mask" style=""></div>
<div id="loading">
<div class="loading-indicator"><img src="../extjs/examples/shared/icons/fam/add.png" width="32" height="32" style="margin-right:8px;float:left;vertical-align:top;"/>Ext Writer <br /><span id="loading-msg">Loading ...</span></div>
</div>
</body>
</html>
Ext.app.REMOTING_API = {
"type": "remoting",
"id": "1",
"url": "../directRouter.ashx",
"actions": {
"CallTypes": [{
"name": "Echo",
"len": 1,
"formHandler": false
}, {
"name": "GetTime",
"len": 0,
"formHandler": false
}, {
"name": "UploadHttpRequestParam",
"len": 1,
"formHandler": true
}, {
"name": "UploadNamedParameter",
"len": 1,
"formHandler": true
}, {
"name": "SaveMethod",
"len": 3,
"formHandler": false
}, {
"name": "SaveMethod_Form",
"len": 1,
"formHandler": true
}, {
"name": "DateSample",
"len": 2,
"formHandler": false
}],
"TreeAction": [{
"name": "getChildNodes",
"len": 2,
"formHandler": false
}],
"CRUDSampleMethods": [{
"name": "create",
"len": 1,
"formHandler": false
}, {
"name": "read",
"len": 1,
"formHandler": false
}, {
"name": "update",
"len": 2,
"formHandler": false
}, {
"name": "destroy",
"len": 1,
"formHandler": false
}, {
"name": "reset",
"len": 0,
"formHandler": false
}],
"CRUDSampleMethods2": [{
"name": "create",
"len": 1,
"formHandler": false
}, {
"name": "read",
"len": 1,
"formHandler": false
}, {
"name": "update",
"len": 2,
"formHandler": false
}, {
"name": "destroy",
"len": 1,
"formHandler": false
}, {
"name": "reset",
"len": 0,
"formHandler": false
}]
}
};
[{
"type": "rpc",
"name": null,
"tid": 1,
"action": "CRUDSampleMethods2",
"method": "read",
"result": {
"success": true,
"results": 3,
"data": [{
"id": "1",
"email": "email1@extjs.com",
"first": "Martin",
"last": "Späth"
}, {
"id": "2",
"email": "email2@extjs.com",
"first": "Heinz",
"last": "Erhart"
}, {
"id": "3",
"email": "email1@extjs.com",
"first": "Albert",
"last": "Einstein"
}]
},
"message": null,
"where": null,
"errorcode": 0
}]
Ext.require(['Ext.direct.*', 'Ext.data.*', 'Ext.grid.*', 'Ext.util.Format']);
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id', 'email', 'first', 'last']
});
Ext.onReady(function () {
Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
// create the Tree
Ext.define('mypanel', {
extend: 'Ext.grid.Panel',
store: {
model: 'User',
remoteSort: true,
autoLoad: true,
// sorters: [{
// property: 'email',
// direction: 'ASC'
// }, {
// property: 'first',
// direction: 'DESC'
// }],
proxy: {
type: 'direct',
directFn: CRUDSampleMethods2.read
}
},
columns: [{
dataIndex: 'email',
flex: 1,
text: 'Email'
}, {
dataIndex: 'first',
//align: 'right',
width: 120,
text: 'First'
//renderer: Ext.util.Format.usMoney
}],
height: 350,
width: 600,
title: 'User Grid',
renderTo: Ext.getBody()
});
});
Ext.onReady(function () {
Ext.Direct.addProvider(Ext.app.REMOTING_API);
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id', 'email', 'first', 'last']
});
// var reader = new Ext.data.JsonReader({ // ext 3 code
// totalProperty: 'results',
// successProperty: 'success',
// idProperty: 'id',
// root: 'data'
// }, [{
// name: 'id'
// }, {
// name: 'email',
// allowBlank: false
// }, {
// name: 'first',
// allowBlank: false
// }, {
// name: 'last',
// allowBlank: false
// }]
// );
var reader = Ext.create('Ext.data.JsonReader', { // ext 4 code
totalProperty: 'results',
successProperty: 'success',
idProperty: 'id',
root: 'data'
});
//var writer = new Ext.data.JsonWriter({ // convert from ext 3 to ext 4
var writer = Ext.create('Ext.data.JsonWriter', {
returnJson: false,
writeAllFields: true
});
//var store = new Ext.data.DirectStore({
var store = Ext.create('Ext.data.DirectStore', {
model: 'User',
api: {
read: CRUDSampleMethods2.read,
create: CRUDSampleMethods2.create,
update: CRUDSampleMethods2.update,
destroy: CRUDSampleMethods2.destroy
},
reader: reader,
baseParams: {
dummy: 'blubb'
},
writer: writer, // <-- plug a DataWriter into the store just as you would a Reader
paramsAsHash: true,
batchSave: false,
batch: false,
prettyUrls: false,
remoteSort: true,
listeners: {
load: function (result) { },
loadexception: function () {
},
scope: this
}
});
//
var myPageSize = 10;
var userColumns = [{
header: "ID",
width: 40,
sortable: true,
dataIndex: 'id'
}, {
header: "Email",
width: 100,
sortable: true,
dataIndex: 'email'
//editor: new Ext.form.TextField({})
}, {
header: "First",
width: 50,
sortable: true,
dataIndex: 'first'
//editor: new Ext.form.TextField({})
}, {
header: "Last",
width: 50,
sortable: true,
dataIndex: 'last'
//editor: new Ext.form.TextField({})
}];
Ext.onReady(function () {
Ext.QuickTips.init();
// var userForm = new App.user.Form({
// renderTo: 'user-form',
// listeners: {
// create: function (fpanel, data) { // <-- custom "create" event defined in App.user.Form class
// var rec = new userGrid.store.recordType(data);
// userGrid.store.insert(0, rec);
// }
// }
// });
// create user.Grid instance (@see UserGrid.js)
var userGrid = Ext.create('mypanel', {
renderTo: Ext.getBody(),
store: store,
columns: userColumns,
//bbar: new Ext.PagingToolbar({
bbar: Ext.create('Ext.PagingToolbar', {
store: store, // grid and PagingToolbar using same store
displayInfo: true,
pageSize: myPageSize,
prependButtons: true,
items: [
'text 1'
]
}),
listeners: {
rowclick: function (g, index, ev) {
var rec = g.store.getAt(index);
//userForm.loadRecord(rec);
},
destroy: function () {
//userForm.getForm().reset();
}
}
});
setTimeout(function () {
Ext.get('loading').remove();
Ext.fly('loading-mask').fadeOut({
remove: true
});
store.load({
params: {
start: 0, // specify params for the first page load if using paging
limit: myPageSize,
foo: 'bar'
}
});
}, 250);
});
}); // onready
var store = Ext.create('Ext.data.Store', {
model: 'User',
//fields: ['id', 'email', 'first', 'last'],
proxy: {
type: 'direct',
directFn: CRUDSampleMethods2.read,
reader: {
root: 'data'
}
}
});
JavaScript代码(XGrid.js):
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Ext Direct Grid Integration</title>
<link rel="stylesheet" type="text/css" href="http://www.rasc.ch/extjs-4.1.3/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="http://www.rasc.ch/extjs-4.1.3/examples/shared/example.css" />
<script src="http://www.rasc.ch/extjs-4.1.3/ext-all-dev.js"></script>
<script type="text/javascript" src="../directProxy.ashx"></script>
<script type="text/javascript" src="XGrid_writer.js"></script>
<script type="text/javascript" src="XGrid.js"></script>
<!--<script src="../api-debug.js?group=turnover"></script>-->
<!--<script src="api-debug.js"></script>-->
</head>
<body>
<h1>Ext Direct Grid Integration</h1>
<p>
Source code: <a href="XGrid.js">XGrid.js</a>
</p>
<div id="loading-mask" style=""></div>
<div id="loading">
<div class="loading-indicator"><img src="../extjs/examples/shared/icons/fam/add.png" width="32" height="32" style="margin-right:8px;float:left;vertical-align:top;"/>Ext Writer <br /><span id="loading-msg">Loading ...</span></div>
</div>
</body>
</html>
Ext.app.REMOTING_API = {
"type": "remoting",
"id": "1",
"url": "../directRouter.ashx",
"actions": {
"CallTypes": [{
"name": "Echo",
"len": 1,
"formHandler": false
}, {
"name": "GetTime",
"len": 0,
"formHandler": false
}, {
"name": "UploadHttpRequestParam",
"len": 1,
"formHandler": true
}, {
"name": "UploadNamedParameter",
"len": 1,
"formHandler": true
}, {
"name": "SaveMethod",
"len": 3,
"formHandler": false
}, {
"name": "SaveMethod_Form",
"len": 1,
"formHandler": true
}, {
"name": "DateSample",
"len": 2,
"formHandler": false
}],
"TreeAction": [{
"name": "getChildNodes",
"len": 2,
"formHandler": false
}],
"CRUDSampleMethods": [{
"name": "create",
"len": 1,
"formHandler": false
}, {
"name": "read",
"len": 1,
"formHandler": false
}, {
"name": "update",
"len": 2,
"formHandler": false
}, {
"name": "destroy",
"len": 1,
"formHandler": false
}, {
"name": "reset",
"len": 0,
"formHandler": false
}],
"CRUDSampleMethods2": [{
"name": "create",
"len": 1,
"formHandler": false
}, {
"name": "read",
"len": 1,
"formHandler": false
}, {
"name": "update",
"len": 2,
"formHandler": false
}, {
"name": "destroy",
"len": 1,
"formHandler": false
}, {
"name": "reset",
"len": 0,
"formHandler": false
}]
}
};
[{
"type": "rpc",
"name": null,
"tid": 1,
"action": "CRUDSampleMethods2",
"method": "read",
"result": {
"success": true,
"results": 3,
"data": [{
"id": "1",
"email": "email1@extjs.com",
"first": "Martin",
"last": "Späth"
}, {
"id": "2",
"email": "email2@extjs.com",
"first": "Heinz",
"last": "Erhart"
}, {
"id": "3",
"email": "email1@extjs.com",
"first": "Albert",
"last": "Einstein"
}]
},
"message": null,
"where": null,
"errorcode": 0
}]
Ext.require(['Ext.direct.*', 'Ext.data.*', 'Ext.grid.*', 'Ext.util.Format']);
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id', 'email', 'first', 'last']
});
Ext.onReady(function () {
Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
// create the Tree
Ext.define('mypanel', {
extend: 'Ext.grid.Panel',
store: {
model: 'User',
remoteSort: true,
autoLoad: true,
// sorters: [{
// property: 'email',
// direction: 'ASC'
// }, {
// property: 'first',
// direction: 'DESC'
// }],
proxy: {
type: 'direct',
directFn: CRUDSampleMethods2.read
}
},
columns: [{
dataIndex: 'email',
flex: 1,
text: 'Email'
}, {
dataIndex: 'first',
//align: 'right',
width: 120,
text: 'First'
//renderer: Ext.util.Format.usMoney
}],
height: 350,
width: 600,
title: 'User Grid',
renderTo: Ext.getBody()
});
});
Ext.onReady(function () {
Ext.Direct.addProvider(Ext.app.REMOTING_API);
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id', 'email', 'first', 'last']
});
// var reader = new Ext.data.JsonReader({ // ext 3 code
// totalProperty: 'results',
// successProperty: 'success',
// idProperty: 'id',
// root: 'data'
// }, [{
// name: 'id'
// }, {
// name: 'email',
// allowBlank: false
// }, {
// name: 'first',
// allowBlank: false
// }, {
// name: 'last',
// allowBlank: false
// }]
// );
var reader = Ext.create('Ext.data.JsonReader', { // ext 4 code
totalProperty: 'results',
successProperty: 'success',
idProperty: 'id',
root: 'data'
});
//var writer = new Ext.data.JsonWriter({ // convert from ext 3 to ext 4
var writer = Ext.create('Ext.data.JsonWriter', {
returnJson: false,
writeAllFields: true
});
//var store = new Ext.data.DirectStore({
var store = Ext.create('Ext.data.DirectStore', {
model: 'User',
api: {
read: CRUDSampleMethods2.read,
create: CRUDSampleMethods2.create,
update: CRUDSampleMethods2.update,
destroy: CRUDSampleMethods2.destroy
},
reader: reader,
baseParams: {
dummy: 'blubb'
},
writer: writer, // <-- plug a DataWriter into the store just as you would a Reader
paramsAsHash: true,
batchSave: false,
batch: false,
prettyUrls: false,
remoteSort: true,
listeners: {
load: function (result) { },
loadexception: function () {
},
scope: this
}
});
//
var myPageSize = 10;
var userColumns = [{
header: "ID",
width: 40,
sortable: true,
dataIndex: 'id'
}, {
header: "Email",
width: 100,
sortable: true,
dataIndex: 'email'
//editor: new Ext.form.TextField({})
}, {
header: "First",
width: 50,
sortable: true,
dataIndex: 'first'
//editor: new Ext.form.TextField({})
}, {
header: "Last",
width: 50,
sortable: true,
dataIndex: 'last'
//editor: new Ext.form.TextField({})
}];
Ext.onReady(function () {
Ext.QuickTips.init();
// var userForm = new App.user.Form({
// renderTo: 'user-form',
// listeners: {
// create: function (fpanel, data) { // <-- custom "create" event defined in App.user.Form class
// var rec = new userGrid.store.recordType(data);
// userGrid.store.insert(0, rec);
// }
// }
// });
// create user.Grid instance (@see UserGrid.js)
var userGrid = Ext.create('mypanel', {
renderTo: Ext.getBody(),
store: store,
columns: userColumns,
//bbar: new Ext.PagingToolbar({
bbar: Ext.create('Ext.PagingToolbar', {
store: store, // grid and PagingToolbar using same store
displayInfo: true,
pageSize: myPageSize,
prependButtons: true,
items: [
'text 1'
]
}),
listeners: {
rowclick: function (g, index, ev) {
var rec = g.store.getAt(index);
//userForm.loadRecord(rec);
},
destroy: function () {
//userForm.getForm().reset();
}
}
});
setTimeout(function () {
Ext.get('loading').remove();
Ext.fly('loading-mask').fadeOut({
remove: true
});
store.load({
params: {
start: 0, // specify params for the first page load if using paging
limit: myPageSize,
foo: 'bar'
}
});
}, 250);
});
}); // onready
var store = Ext.create('Ext.data.Store', {
model: 'User',
//fields: ['id', 'email', 'first', 'last'],
proxy: {
type: 'direct',
directFn: CRUDSampleMethods2.read,
reader: {
root: 'data'
}
}
});
JavaScript代码(XGrid\u writer.js):
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Ext Direct Grid Integration</title>
<link rel="stylesheet" type="text/css" href="http://www.rasc.ch/extjs-4.1.3/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="http://www.rasc.ch/extjs-4.1.3/examples/shared/example.css" />
<script src="http://www.rasc.ch/extjs-4.1.3/ext-all-dev.js"></script>
<script type="text/javascript" src="../directProxy.ashx"></script>
<script type="text/javascript" src="XGrid_writer.js"></script>
<script type="text/javascript" src="XGrid.js"></script>
<!--<script src="../api-debug.js?group=turnover"></script>-->
<!--<script src="api-debug.js"></script>-->
</head>
<body>
<h1>Ext Direct Grid Integration</h1>
<p>
Source code: <a href="XGrid.js">XGrid.js</a>
</p>
<div id="loading-mask" style=""></div>
<div id="loading">
<div class="loading-indicator"><img src="../extjs/examples/shared/icons/fam/add.png" width="32" height="32" style="margin-right:8px;float:left;vertical-align:top;"/>Ext Writer <br /><span id="loading-msg">Loading ...</span></div>
</div>
</body>
</html>
Ext.app.REMOTING_API = {
"type": "remoting",
"id": "1",
"url": "../directRouter.ashx",
"actions": {
"CallTypes": [{
"name": "Echo",
"len": 1,
"formHandler": false
}, {
"name": "GetTime",
"len": 0,
"formHandler": false
}, {
"name": "UploadHttpRequestParam",
"len": 1,
"formHandler": true
}, {
"name": "UploadNamedParameter",
"len": 1,
"formHandler": true
}, {
"name": "SaveMethod",
"len": 3,
"formHandler": false
}, {
"name": "SaveMethod_Form",
"len": 1,
"formHandler": true
}, {
"name": "DateSample",
"len": 2,
"formHandler": false
}],
"TreeAction": [{
"name": "getChildNodes",
"len": 2,
"formHandler": false
}],
"CRUDSampleMethods": [{
"name": "create",
"len": 1,
"formHandler": false
}, {
"name": "read",
"len": 1,
"formHandler": false
}, {
"name": "update",
"len": 2,
"formHandler": false
}, {
"name": "destroy",
"len": 1,
"formHandler": false
}, {
"name": "reset",
"len": 0,
"formHandler": false
}],
"CRUDSampleMethods2": [{
"name": "create",
"len": 1,
"formHandler": false
}, {
"name": "read",
"len": 1,
"formHandler": false
}, {
"name": "update",
"len": 2,
"formHandler": false
}, {
"name": "destroy",
"len": 1,
"formHandler": false
}, {
"name": "reset",
"len": 0,
"formHandler": false
}]
}
};
[{
"type": "rpc",
"name": null,
"tid": 1,
"action": "CRUDSampleMethods2",
"method": "read",
"result": {
"success": true,
"results": 3,
"data": [{
"id": "1",
"email": "email1@extjs.com",
"first": "Martin",
"last": "Späth"
}, {
"id": "2",
"email": "email2@extjs.com",
"first": "Heinz",
"last": "Erhart"
}, {
"id": "3",
"email": "email1@extjs.com",
"first": "Albert",
"last": "Einstein"
}]
},
"message": null,
"where": null,
"errorcode": 0
}]
Ext.require(['Ext.direct.*', 'Ext.data.*', 'Ext.grid.*', 'Ext.util.Format']);
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id', 'email', 'first', 'last']
});
Ext.onReady(function () {
Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
// create the Tree
Ext.define('mypanel', {
extend: 'Ext.grid.Panel',
store: {
model: 'User',
remoteSort: true,
autoLoad: true,
// sorters: [{
// property: 'email',
// direction: 'ASC'
// }, {
// property: 'first',
// direction: 'DESC'
// }],
proxy: {
type: 'direct',
directFn: CRUDSampleMethods2.read
}
},
columns: [{
dataIndex: 'email',
flex: 1,
text: 'Email'
}, {
dataIndex: 'first',
//align: 'right',
width: 120,
text: 'First'
//renderer: Ext.util.Format.usMoney
}],
height: 350,
width: 600,
title: 'User Grid',
renderTo: Ext.getBody()
});
});
Ext.onReady(function () {
Ext.Direct.addProvider(Ext.app.REMOTING_API);
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id', 'email', 'first', 'last']
});
// var reader = new Ext.data.JsonReader({ // ext 3 code
// totalProperty: 'results',
// successProperty: 'success',
// idProperty: 'id',
// root: 'data'
// }, [{
// name: 'id'
// }, {
// name: 'email',
// allowBlank: false
// }, {
// name: 'first',
// allowBlank: false
// }, {
// name: 'last',
// allowBlank: false
// }]
// );
var reader = Ext.create('Ext.data.JsonReader', { // ext 4 code
totalProperty: 'results',
successProperty: 'success',
idProperty: 'id',
root: 'data'
});
//var writer = new Ext.data.JsonWriter({ // convert from ext 3 to ext 4
var writer = Ext.create('Ext.data.JsonWriter', {
returnJson: false,
writeAllFields: true
});
//var store = new Ext.data.DirectStore({
var store = Ext.create('Ext.data.DirectStore', {
model: 'User',
api: {
read: CRUDSampleMethods2.read,
create: CRUDSampleMethods2.create,
update: CRUDSampleMethods2.update,
destroy: CRUDSampleMethods2.destroy
},
reader: reader,
baseParams: {
dummy: 'blubb'
},
writer: writer, // <-- plug a DataWriter into the store just as you would a Reader
paramsAsHash: true,
batchSave: false,
batch: false,
prettyUrls: false,
remoteSort: true,
listeners: {
load: function (result) { },
loadexception: function () {
},
scope: this
}
});
//
var myPageSize = 10;
var userColumns = [{
header: "ID",
width: 40,
sortable: true,
dataIndex: 'id'
}, {
header: "Email",
width: 100,
sortable: true,
dataIndex: 'email'
//editor: new Ext.form.TextField({})
}, {
header: "First",
width: 50,
sortable: true,
dataIndex: 'first'
//editor: new Ext.form.TextField({})
}, {
header: "Last",
width: 50,
sortable: true,
dataIndex: 'last'
//editor: new Ext.form.TextField({})
}];
Ext.onReady(function () {
Ext.QuickTips.init();
// var userForm = new App.user.Form({
// renderTo: 'user-form',
// listeners: {
// create: function (fpanel, data) { // <-- custom "create" event defined in App.user.Form class
// var rec = new userGrid.store.recordType(data);
// userGrid.store.insert(0, rec);
// }
// }
// });
// create user.Grid instance (@see UserGrid.js)
var userGrid = Ext.create('mypanel', {
renderTo: Ext.getBody(),
store: store,
columns: userColumns,
//bbar: new Ext.PagingToolbar({
bbar: Ext.create('Ext.PagingToolbar', {
store: store, // grid and PagingToolbar using same store
displayInfo: true,
pageSize: myPageSize,
prependButtons: true,
items: [
'text 1'
]
}),
listeners: {
rowclick: function (g, index, ev) {
var rec = g.store.getAt(index);
//userForm.loadRecord(rec);
},
destroy: function () {
//userForm.getForm().reset();
}
}
});
setTimeout(function () {
Ext.get('loading').remove();
Ext.fly('loading-mask').fadeOut({
remove: true
});
store.load({
params: {
start: 0, // specify params for the first page load if using paging
limit: myPageSize,
foo: 'bar'
}
});
}, 250);
});
}); // onready
var store = Ext.create('Ext.data.Store', {
model: 'User',
//fields: ['id', 'email', 'first', 'last'],
proxy: {
type: 'direct',
directFn: CRUDSampleMethods2.read,
reader: {
root: 'data'
}
}
});
编辑2:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Ext Direct Grid Integration</title>
<link rel="stylesheet" type="text/css" href="http://www.rasc.ch/extjs-4.1.3/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="http://www.rasc.ch/extjs-4.1.3/examples/shared/example.css" />
<script src="http://www.rasc.ch/extjs-4.1.3/ext-all-dev.js"></script>
<script type="text/javascript" src="../directProxy.ashx"></script>
<script type="text/javascript" src="XGrid_writer.js"></script>
<script type="text/javascript" src="XGrid.js"></script>
<!--<script src="../api-debug.js?group=turnover"></script>-->
<!--<script src="api-debug.js"></script>-->
</head>
<body>
<h1>Ext Direct Grid Integration</h1>
<p>
Source code: <a href="XGrid.js">XGrid.js</a>
</p>
<div id="loading-mask" style=""></div>
<div id="loading">
<div class="loading-indicator"><img src="../extjs/examples/shared/icons/fam/add.png" width="32" height="32" style="margin-right:8px;float:left;vertical-align:top;"/>Ext Writer <br /><span id="loading-msg">Loading ...</span></div>
</div>
</body>
</html>
Ext.app.REMOTING_API = {
"type": "remoting",
"id": "1",
"url": "../directRouter.ashx",
"actions": {
"CallTypes": [{
"name": "Echo",
"len": 1,
"formHandler": false
}, {
"name": "GetTime",
"len": 0,
"formHandler": false
}, {
"name": "UploadHttpRequestParam",
"len": 1,
"formHandler": true
}, {
"name": "UploadNamedParameter",
"len": 1,
"formHandler": true
}, {
"name": "SaveMethod",
"len": 3,
"formHandler": false
}, {
"name": "SaveMethod_Form",
"len": 1,
"formHandler": true
}, {
"name": "DateSample",
"len": 2,
"formHandler": false
}],
"TreeAction": [{
"name": "getChildNodes",
"len": 2,
"formHandler": false
}],
"CRUDSampleMethods": [{
"name": "create",
"len": 1,
"formHandler": false
}, {
"name": "read",
"len": 1,
"formHandler": false
}, {
"name": "update",
"len": 2,
"formHandler": false
}, {
"name": "destroy",
"len": 1,
"formHandler": false
}, {
"name": "reset",
"len": 0,
"formHandler": false
}],
"CRUDSampleMethods2": [{
"name": "create",
"len": 1,
"formHandler": false
}, {
"name": "read",
"len": 1,
"formHandler": false
}, {
"name": "update",
"len": 2,
"formHandler": false
}, {
"name": "destroy",
"len": 1,
"formHandler": false
}, {
"name": "reset",
"len": 0,
"formHandler": false
}]
}
};
[{
"type": "rpc",
"name": null,
"tid": 1,
"action": "CRUDSampleMethods2",
"method": "read",
"result": {
"success": true,
"results": 3,
"data": [{
"id": "1",
"email": "email1@extjs.com",
"first": "Martin",
"last": "Späth"
}, {
"id": "2",
"email": "email2@extjs.com",
"first": "Heinz",
"last": "Erhart"
}, {
"id": "3",
"email": "email1@extjs.com",
"first": "Albert",
"last": "Einstein"
}]
},
"message": null,
"where": null,
"errorcode": 0
}]
Ext.require(['Ext.direct.*', 'Ext.data.*', 'Ext.grid.*', 'Ext.util.Format']);
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id', 'email', 'first', 'last']
});
Ext.onReady(function () {
Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
// create the Tree
Ext.define('mypanel', {
extend: 'Ext.grid.Panel',
store: {
model: 'User',
remoteSort: true,
autoLoad: true,
// sorters: [{
// property: 'email',
// direction: 'ASC'
// }, {
// property: 'first',
// direction: 'DESC'
// }],
proxy: {
type: 'direct',
directFn: CRUDSampleMethods2.read
}
},
columns: [{
dataIndex: 'email',
flex: 1,
text: 'Email'
}, {
dataIndex: 'first',
//align: 'right',
width: 120,
text: 'First'
//renderer: Ext.util.Format.usMoney
}],
height: 350,
width: 600,
title: 'User Grid',
renderTo: Ext.getBody()
});
});
Ext.onReady(function () {
Ext.Direct.addProvider(Ext.app.REMOTING_API);
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id', 'email', 'first', 'last']
});
// var reader = new Ext.data.JsonReader({ // ext 3 code
// totalProperty: 'results',
// successProperty: 'success',
// idProperty: 'id',
// root: 'data'
// }, [{
// name: 'id'
// }, {
// name: 'email',
// allowBlank: false
// }, {
// name: 'first',
// allowBlank: false
// }, {
// name: 'last',
// allowBlank: false
// }]
// );
var reader = Ext.create('Ext.data.JsonReader', { // ext 4 code
totalProperty: 'results',
successProperty: 'success',
idProperty: 'id',
root: 'data'
});
//var writer = new Ext.data.JsonWriter({ // convert from ext 3 to ext 4
var writer = Ext.create('Ext.data.JsonWriter', {
returnJson: false,
writeAllFields: true
});
//var store = new Ext.data.DirectStore({
var store = Ext.create('Ext.data.DirectStore', {
model: 'User',
api: {
read: CRUDSampleMethods2.read,
create: CRUDSampleMethods2.create,
update: CRUDSampleMethods2.update,
destroy: CRUDSampleMethods2.destroy
},
reader: reader,
baseParams: {
dummy: 'blubb'
},
writer: writer, // <-- plug a DataWriter into the store just as you would a Reader
paramsAsHash: true,
batchSave: false,
batch: false,
prettyUrls: false,
remoteSort: true,
listeners: {
load: function (result) { },
loadexception: function () {
},
scope: this
}
});
//
var myPageSize = 10;
var userColumns = [{
header: "ID",
width: 40,
sortable: true,
dataIndex: 'id'
}, {
header: "Email",
width: 100,
sortable: true,
dataIndex: 'email'
//editor: new Ext.form.TextField({})
}, {
header: "First",
width: 50,
sortable: true,
dataIndex: 'first'
//editor: new Ext.form.TextField({})
}, {
header: "Last",
width: 50,
sortable: true,
dataIndex: 'last'
//editor: new Ext.form.TextField({})
}];
Ext.onReady(function () {
Ext.QuickTips.init();
// var userForm = new App.user.Form({
// renderTo: 'user-form',
// listeners: {
// create: function (fpanel, data) { // <-- custom "create" event defined in App.user.Form class
// var rec = new userGrid.store.recordType(data);
// userGrid.store.insert(0, rec);
// }
// }
// });
// create user.Grid instance (@see UserGrid.js)
var userGrid = Ext.create('mypanel', {
renderTo: Ext.getBody(),
store: store,
columns: userColumns,
//bbar: new Ext.PagingToolbar({
bbar: Ext.create('Ext.PagingToolbar', {
store: store, // grid and PagingToolbar using same store
displayInfo: true,
pageSize: myPageSize,
prependButtons: true,
items: [
'text 1'
]
}),
listeners: {
rowclick: function (g, index, ev) {
var rec = g.store.getAt(index);
//userForm.loadRecord(rec);
},
destroy: function () {
//userForm.getForm().reset();
}
}
});
setTimeout(function () {
Ext.get('loading').remove();
Ext.fly('loading-mask').fadeOut({
remove: true
});
store.load({
params: {
start: 0, // specify params for the first page load if using paging
limit: myPageSize,
foo: 'bar'
}
});
}, 250);
});
}); // onready
var store = Ext.create('Ext.data.Store', {
model: 'User',
//fields: ['id', 'email', 'first', 'last'],
proxy: {
type: 'direct',
directFn: CRUDSampleMethods2.read,
reader: {
root: 'data'
}
}
});
我以前在定义(Ext.define)和实例(Ext.create)中有一个存储。现在我只有一个“Ext.grid.Panel”的实例。我不再有XGrid.js了。下面的代码是XGrid.html。稍后,我可以在MVC中创建我的定义,但至少这让我开始了。作者还没有开始工作,所以这是下一个挑战
Ext.require(['Ext.direct.*', 'Ext.data.*', 'Ext.grid.*', 'Ext.util.Format']);
Ext.onReady(function () {
Ext.Direct.addProvider(Ext.app.REMOTING_API);
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id', 'email', 'first', 'last']
});
// var reader = new Ext.data.JsonReader({
// totalProperty: 'results',
// successProperty: 'success',
// idProperty: 'id',
// root: 'data'
// }, [{
// name: 'id'
// }, {
// name: 'email',
// allowBlank: false
// }, {
// name: 'first',
// allowBlank: false
// }, {
// name: 'last',
// allowBlank: false
// }]
// );
var reader = Ext.create('Ext.data.JsonReader', {
totalProperty: 'results',
successProperty: 'success',
idProperty: 'id',
root: 'data'
//fields: [
// {
// name: 'id'
// }, {
// name: 'email'
// }, {
// name: 'first'
// }, {
// name: 'last'
// }
// ]
});
//var writer = new Ext.data.JsonWriter({ // convert from ext 3 to ext 4
var writer = Ext.create('Ext.data.JsonWriter', {
returnJson: false,
writeAllFields: true
});
var store = Ext.create('Ext.data.Store', {
model: 'User',
//fields: ['id', 'email', 'first', 'last'],
proxy: {
type: 'direct',
directFn: CRUDSampleMethods2.read,
reader: {
root: 'data'
}
}
});
//var store = new Ext.data.DirectStore({
// var store = Ext.create('Ext.data.DirectStore', {
// model: 'User',
// api: {
// read: CRUDSampleMethods2.read,
// create: CRUDSampleMethods2.create,
// update: CRUDSampleMethods2.update,
// destroy: CRUDSampleMethods2.destroy
// },
// //reader: reader,
// baseParams: {
// dummy: 'blubb'
// },
// writer: writer, // <-- plug a DataWriter into the store just as you would a Reader
// paramsAsHash: true,
// batchSave: false,
// batch: false,
// prettyUrls: false,
// remoteSort: true,
// listeners: {
// load: function (result) { },
// loadexception: function () {
// },
// scope: this
// }
// });
// //
var myPageSize = 10;
var userColumns = [{
header: "ID",
flex: 1,
sortable: true,
dataIndex: 'id'
}, {
header: "Email",
flex: 1,
sortable: true,
dataIndex: 'email'
//editor: new Ext.form.TextField({})
}, {
header: "First",
flex: 1,
sortable: true,
dataIndex: 'first'
//editor: new Ext.form.TextField({})
}, {
header: "Last",
flex: 1,
sortable: true,
dataIndex: 'last'
//editor: new Ext.form.TextField({})
}];
// Ext.onReady(function () {
Ext.QuickTips.init();
// var userForm = new App.user.Form({
// renderTo: 'user-form',
// listeners: {
// create: function (fpanel, data) { // <-- custom "create" event defined in App.user.Form class
// var rec = new userGrid.store.recordType(data);
// userGrid.store.insert(0, rec);
// }
// }
// });
// create user.Grid instance (@see UserGrid.js)
var userGrid = Ext.create('Ext.grid.Panel', {
title: 'user grid',
renderTo: Ext.getBody(),
height: 350,
width: 600,
remoteSort: false,
// autoLoad: true,
store: store,
columns: userColumns,
//bbar: new Ext.PagingToolbar({
bbar: Ext.create('Ext.PagingToolbar', {
store: store, // grid and PagingToolbar using same store
displayInfo: true,
pageSize: myPageSize,
prependButtons: true,
items: [
'text 1'
]
}),
listeners: {
rowclick: function (g, index, ev) {
var rec = g.store.getAt(index);
//userForm.loadRecord(rec);
},
destroy: function () {
//userForm.getForm().reset();
}
}
});
setTimeout(function () {
Ext.get('loading').remove();
Ext.fly('loading-mask').fadeOut({
remove: true
});
store.load({
params: {
start: 0, // specify params for the first page load if using paging
limit: myPageSize,
foo: 'bar'
}
});
}, 250);
// });
// Ext.require(['Ext.direct.*', 'Ext.data.*', 'Ext.grid.*', 'Ext.util.Format']);
// Ext.define('User', {
// extend: 'Ext.data.Model',
// fields: ['id', 'email', 'first', 'last']
// });
// Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
// create the Tree
// var userGrid = Ext.create('mypanel', {
// store: store,
// // store: {
// // model: 'User',
// // remoteSort: true,
// // autoLoad: true,
// //// sorters: [{
// //// property: 'email',
// //// direction: 'ASC'
// //// }, {
// //// property: 'first',
// //// direction: 'DESC'
// //// }],
// // proxy: {
// // type: 'direct',
// // directFn: CRUDSampleMethods2.read
// // }
// // },
// columns: [{
// dataIndex: 'email',
// flex: 1,
// text: 'Email'
// }, {
// dataIndex: 'first',
// //align: 'right',
// width: 120,
// text: 'First'
// //renderer: Ext.util.Format.usMoney
// }],
// height: 350,
// width: 600,
// title: 'User Grid',
// renderTo: Ext.getBody()
// });
}); // onready
Ext.require(['Ext.direct.*,'Ext.data.*,'Ext.grid.*,'Ext.util.Format']);
Ext.onReady(函数(){
Ext.Direct.addProvider(Ext.app.REMOTING\u API);
Ext.define('用户'{
扩展:“Ext.data.Model”,
字段:['id'、'email'、'first'、'last']
});
//var reader=new Ext.data.JsonReader({
//totalProperty:'结果',
//successProperty:“成功”,
//idProperty:“id”,
//root:“数据”
// }, [{
//姓名:“id”
// }, {
//名称:'电子邮件',
//allowBlank:false
// }, {
//姓名:'第一',
//allowBlank:false
// }, {
//姓名:'最后',
//allowBlank:false
// }]
// );
var reader=Ext.create('Ext.data.JsonReader'{
totalProperty:'结果',
successProperty:“成功”,
idProperty:“id”,
root:“数据”
//字段:[
// {
//姓名:“id”
// }, {
//名称:“电子邮件”
// }, {
//名字:“第一”
// }, {
//姓名:'最后'
// }
// ]
});
//var writer=new Ext.data.JsonWriter({//从ext3转换为ext4
var writer=Ext.create('Ext.data.JsonWriter'{
回答:错,
writeAllFields:对
});
var store=Ext.create('Ext.data.store'{
模型:“用户”,
//字段:['id','email','first','last'],
代理:{
类型:'直接',
directFn:CRUDSampleMethods2.read,
读者:{
root:“数据”
}
}
});
//var store=新的Ext.data.DirectStore({
//var store=Ext.create('Ext.data.DirectStore'{
//模型:“用户”,
//api:{
//read:CRUDSampleMethods2.read,
//create:CRUDSampleMethods2.create,
//更新:CRUDSampleMethods2.update,
//销毁:CRUDSampleMethods2.destroy
// },
////读者:读者,
//基本参数:{
//傻瓜:“blubb”
// },
//writer:writer,//事实上,您的读卡器配置被忽略。是代理的配置选项,而不是存储…请注意,XGrid.js中的存储配置(其中配置了代理)在XGrid\u writer.js中被完全替换
要确认此诊断,可以直接在创建的DirectStore中设置读卡器配置(如文档所示):
然后,您可以搜索一种干净的方法。请注意,出于同样的原因,您的writer配置也被忽略。事实上,您的reader配置被忽略。是代理的配置选项,而不是存储…请注意,XGrid.js中的存储配置(其中配置了代理)在XGrid_writer.js中被完全替换
要确认此诊断,可以直接在创建的DirectStore中设置读卡器配置(如文档所示):
然后,您可以搜索一种干净的方法。请注意,出于同样的原因,您的writer配置也被忽略。您是否可以看到正确的HTTP请求离开浏览器并返回预期的JSON负载?我将执行什么工作流来查看此情况?(我可以在Mozilla Firefox或Google Chrome中进行故障排除)只需查看开发工具的“网络”选项卡,就可以在store.load
行上设置一个js断点,并在执行之前清除所有请求。这将更容易找到相关请求。@rixo当我点击store.load JavaScript断点时,我在Chrome中清除了网络面板在这之后,加载了4个gif文件和directRouter.ashx,与您在我的编辑中看到的响应相同(在Mozilla Firefox中看到)。希望我遵循了您的指示,好吗?就这样。这不是客户机-服务器通信问题。问题可能出在读卡器中。您能看到正确的HTTP请求离开浏览器并返回预期的JSON负载吗?我将执行什么工作流来查看此问题?(我可以在Mozilla Firefox或Google Chrome中进行故障排除)只需查看开发工具的“网络”选项卡,就可以在store.load
行上设置一个js断点,并在执行之前清除所有请求。这将更容易找到相关请求。@rixo当我点击store.load JavaScript断点时,我在Chrome中清除了网络面板在这之后,加载了4个gif文件和directRouter.ashx,与您在我的编辑中看到的响应相同(在Mozilla Firefox中看到)。希望我按照你的指示做了,好吗?就这样。所以这不是客户机-服务器通信问题。问题可能出在读者身上。哈哈!我也得到了答案。我用了一种稍微不同的方法,将根配置包装在代理配置中。关键是根配置缺少f