无法将ExtJS存储与服务器上的Yii模型同步:400错误请求(POST)


Failure to sync ExtJS store with Yii model on server: 400 Bad Request (POST)

我想将ExtJS存储与服务器上的Yii模型同步。读取很顺利,但对服务器的写入并不顺利:400错误请求(POST)。
响应为:"您无权执行此请求。"
数据确实是在POST中形成的:
表单数据
记录:{"article":"YD40516","oem":"3397004667","title":"''u0429''u0435''u0442''u043a…

店内构造函数:

this.proxy =         
        {   
            url:  "index.php?r=backend/index&Table=" + this.modelName + this.params,
            reader: { 
                 root: "data",
                 totalProperty: "count",     
                 type: "json"
            }, 
            writer: { 
                 root: "records",                    
                 encode: true,
                 writeAllFields : false,   
                //type: "json"
            },
            type:"ajax",
            // limitParam: this.limitParam,
        };

我已经关注了这篇关于如何将csrfToken添加到post ajax请求的文章,但它没有带来任何结果。仍然400错误的请求,没有添加Yii_CSRF_TOKEN post参数,尽管在源html中有这样的插入:

 $.ajaxSetup({
     data: {"YII_CSRF_TOKEN": "63f62ed9c92752fab910386195d84eb8b0bbd420"},
     cache:false
 });

我试图在代理配置中添加方法重新定义,但没有用:

actionMethods: {
   read: 'GET', write: 'GET'
},

仍然用于写入,在没有Yii_CSRF_TOKEN 的情况下进行POST

有什么帮助,有什么方向吗?

我在存储代理中设置了额外的参数:

this.proxy =         
        {  
            url:  "index.php?r=backend/index&Table=" + this.modelName + this.params,
            reader: { 
                ...
            }, 
            actionMethods: {
                  read: 'GET', update: 'POST'
            }, 
            extraParams: {YII_CSRF_TOKEN : CSRF_TOKEN },  
            writer: { 
                 root: "records",                    
                 encode: true,    
                 type: "json"
            },
            type:"ajax", 
        };

但诀窍是插入CCD_ 3作为js变量。因此,在注册ExtJS js文件之前,我使用布局文件在html中手动插入CSRF_TOKEN:在我插入的布局文件中:

echo "<script language='javascript'>         
     var CSRF_TOKEN = '" . Yii::app()->request->getCsrfToken() . "'; 
     console.log('CSRF_TOKEN = '+ CSRF_TOKEN);
</script>";  

在视图文件中,与商店相关的js脚本:

<?php Yii::app()->clientScript->registerScriptFile("js/UniversalStore.js"); ?>