Javascript 在EXT.js 4.2.1中,如何指定代理发送的表单数据不是JSON格式?
这是我的代码:Javascript 在EXT.js 4.2.1中,如何指定代理发送的表单数据不是JSON格式?,javascript,ajax,forms,extjs,http-post,Javascript,Ajax,Forms,Extjs,Http Post,这是我的代码: Ext.define('masterLists.siteModel', { extend: 'Ext.data.Model', xtype: 'siteModel', fields: [ {name: 'id', type: 'string'}, {name: 'siteId', type: 'string'}, {name: 'nameCenterEnglish', type: 'string'},
Ext.define('masterLists.siteModel', {
extend: 'Ext.data.Model',
xtype: 'siteModel',
fields: [
{name: 'id', type: 'string'},
{name: 'siteId', type: 'string'},
{name: 'nameCenterEnglish', type: 'string'},
...
],
proxy: {
type: 'ajax',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
api: {
// Called when saving new records
create: '/ACP/ADS?CMD=addSite',
// Called when reading existing records
read: '/ACP/ADS?CMD=loadSite',
// Called when updating existing records
update: '/ACP/ADS?CMD=updateSite',
// Called when deleting existing records
destroy: '/ACP/ADS?CMD=deleteSite'
},
reader: {
type: 'json',
root: 'data'
}
}
});
现在的问题是,当我像这样破坏记录模型时:
record.destroy()
这是我在开发工具中看到的:
如上图所示,表单数据以JSON格式编码。我希望它是在URL编码的键/值对列表中,就像任何正常形式的数据在提交时都会被发送一样
如何在Ext Js中实现这一点??
提前谢谢大家 您可以覆盖代理的buildUrl方法:
Ext.define('masterLists.siteModel', {
extend: 'Ext.data.Model',
xtype: 'siteModel',
fields: [{
name: 'id',
type: 'string'
}, {
name: 'siteId',
type: 'string'
}, {
name: 'nameCenterEnglish',
type: 'string'
}],
proxy: {
type: 'ajax',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
api: {
// Called when saving new records
create: '/ACP/ADS?CMD=addSite',
// Called when reading existing records
read: '/ACP/ADS?CMD=loadSite',
// Called when updating existing records
update: '/ACP/ADS?CMD=updateSite',
// Called when deleting existing records
destroy: '/ACP/ADS?CMD=deleteSite'
},
reader: {
type: 'json',
root: 'data'
},
// To change all the REST methods to GET
actionMethods: {
create: 'GET',
read: 'GET',
update: 'GET',
destroy: 'GET'
},
// To build custom URL
buildUrl: function(request) {
var recordData = request.operation.records[0].getData();
var encodedUrlData = Ext.Object.toQueryString(recordData);
return this.api[request.action] + '&' + encodedUrlData;
}
}
});
这是一个很好的简单解决方案。我想找到一种通过POST发送的方法,但这对我来说确实有效。POST/GET方法是在“actionMethods”配置道具中定义的。是的,但是你不能像GET中那样在POST中附加url,所以这个方法只对GET有效,对吗?为什么不?POST请求可以在路径中发送一些参数。例如,RESTURI可以使用路径参数将资源作为目标。而不是你可以写