我在我的应用程序中实现 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
},