1

我在我的应用程序中实现 Ext.Direct 时遇到问题。我已经按照文档中的教程进行操作,但没有让它工作。

它的问题是它总是返回:Invalid request在我所有的呼吁中,这表明既没有$HTTP_RAW_POST_DATA也没有$_POST['extAction']设置。

路由器.php

...
if(isset($HTTP_RAW_POST_DATA)) {
    header('Content-Type: text/javascript');
    $data = json_decode($HTTP_RAW_POST_DATA);
} else if (isset($_POST['extAction'])) { // form post
    $isForm = true;
    $isUpload = $_POST['extUpload'] == 'true';
    $data = new Action();
    $data->action = $_POST['extAction'];
    $data->method = $_POST['extMethod'];
    $data->tid = isset($_POST['extTID']) ? $_POST['extTID'] : null; // not set for upload
    $data->data = array($_POST, $_FILES);
} else {
    die('Invalid request.');
}
...

POST 值如下:

{
    "action": "viewResourceParticulars",
    "method": "getResults",
    "data": [
        {
            "page": 1,
            "start": 0,
            "limit": 25,
            "group": [
                {
                    "property": "groupField",
                    "direction": "ASC"
                }
            ],
            "sort": [
                {
                    "property": "groupField",
                    "direction": "ASC"
                }
            ]
        }
    ],
    "type": "rpc",
    "tid": 1
}

我检查了我的 php.ini 并且always_populate_raw_post_data选项是true,但它仍然不起作用。所以我现在没有想法。

任何帮助表示赞赏。

编辑(2013-02-12 12:44):

用于调用 Ext.Direct 的代码:

索引.php

$cs->registerScriptFile($baseUrl.'/js/direct/api.php');

api.php 返回

Ext.ns("Ext.app"); Ext.app.REMOTING_API = {"url":"js\/direct\/router.php","type":"remoting","actions":{"viewResourceParticulars":[{"name":"getResults","len":1}]}};

扩展数据存储

...
proxy: {
    type: 'direct',
    directFn: viewResourceParticulars.getResults
},
4

0 回答 0