Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json ExtJS REST代理将所有模型属性附加到PUT方法上的查询字符串_Json_Rest_Extjs_Sencha Touch - Fatal编程技术网

Json ExtJS REST代理将所有模型属性附加到PUT方法上的查询字符串

Json ExtJS REST代理将所有模型属性附加到PUT方法上的查询字符串,json,rest,extjs,sencha-touch,Json,Rest,Extjs,Sencha Touch,在Sencha Touch 2.3.1中调用mystore.sync()时,ExtJS会将模型类的所有属性附加到已定义的代理URL中。例如,它向服务器发送一个PUT方法,如:myserver/restapi/area/students?prop1=AAA&prop2=BBB&prop3=CCC&prop4=DDD&prop5=EEE 我认为这种行为很尴尬,它会复制请求大小,因为JSON对象已经插入到请求体中: 请求头= 内容类型:application/json 请求正文= {“Id”:“1”,

在Sencha Touch 2.3.1中调用mystore.sync()时,ExtJS会将模型类的所有属性附加到已定义的代理URL中。例如,它向服务器发送一个PUT方法,如:myserver/restapi/area/students?prop1=AAA&prop2=BBB&prop3=CCC&prop4=DDD&prop5=EEE

我认为这种行为很尴尬,它会复制请求大小,因为JSON对象已经插入到请求体中:

请求头= 内容类型:application/json

请求正文= {“Id”:“1”,“Prop1”:“AAA”,“Prop2”:“BBB”,“Prop3”:“CCC”,“Prop4”:“DDD”,“Prop5”:“EEE”}

想象一下,如果我有很多大尺寸的字符串属性。。。它可能达到URL大小限制

为了寻找解决方案,我试图在REST代理中将appendId属性的值更改为false,但它刚刚删除了此URL的一个参数(idProperty)

有人知道吗,我怎样才能改变它?这是默认行为吗

我的代码示例

我有一个商店:

Ext.define('MyStore', {
    extend: 'Ext.data.Store',
    config: {
        model: 'MyModel',
        proxy: {
            type: 'rest',
            appendId: false, //I tried to turn it to false to it doesn't change my URL
            url: 'http://myserver/restapi/area/students
        }
    }
});
模型类:

Ext.define('MyModel', {
    extend: 'Ext.data.Model',
    config: {
        fields: [
            'Id',
            'Prop1',
            'Prop2',
            'Prop3',
            'Prop4',
            'Prop5'
        ],
        idProperty: [
            'Id'
        ]
    }
});

谢谢大家!

将属性附加到PUT请求的URL不是默认行为。您对
Ext.data.proxy.Rest
Ext.Ajax
对象有任何覆盖吗?你有没有试过用一个复制这个问题?我只是过度使用Ext.data.Store,但我只是添加了一些自定义事件,没有其他。。。现在,我解决了将代理放在模型类中的问题,它对我来说运行良好。我发现了这个问题。我使用“setExtraParam”方法来代理。所以,现在我意识到代理在任何请求中都会发送这些参数。我使用extraParams是因为我的RESTAPI期望一些参数来处理集合的返回。