我正在尝试编写ExtJS应用程序,它是网格,从服务器上的JSON文件加载数据,并将修改后的字段发送回服务器。问题是,我无法实际将更改或添加的数据发送回服务器脚本。这是代码:
var store = Ext.create('Ext.data.Store', {
model: 'ObjectDefinitionModel',
autoDestroy: true,
autoLoad: true,
proxy: {
type: 'ajax',
url: 'load-object-definition',
api: {
read: 'load-object-definition',
create: 'save-object-definition',
update: 'update-object-definition',
destroy: 'delete-object-definition'
},
reader: {
type: 'json',
root: 'fields'
},
writer: {
type: 'json',
root: 'fields'
}
}
});
我有按钮,按下时调用store.sync()
。在syncinc之后,save-object-definition
中的脚本执行,但它收到的所有内容(在POST和GET中)都是[_dc] => 1311511955134
,我不知道它是什么。
API文档说明所有更改和添加的数据都应该通过代理自动打包和发送。官方示例不显示实际发送的任何数据,只显示一些调试消息。
感谢任何帮助,提前感谢。
答案 0 :(得分:0)
我在我的一个项目中也面临同样的问题,我应该只将新添加或更新的记录发送到服务器进行保存。我最初尝试使用与您在此处发布的方法相同的方法,但稍后(因为它对我也不起作用)我创建了自定义代码以执行以下操作:
一个。当用户单击要保存的按钮时,浏览网格的所有记录并识别更新或新添加的记录。
湾创建一个包含所有此类记录的自定义JSON,并使用此JSON作为参数之一向服务器发出Ajax请求。
这一切绝对是额外的工作,但终于为我服务了。
希望这有帮助。
答案 1 :(得分:0)
ExtJS代理确实发送数据,但使用RAW POST。您可以使用以下功能获取它们:
function GetRAWdata()
{
$result = NULL;
if(function_exists('json_decode'))
{
$jsonData = json_decode(trim(file_get_contents('php://input')), true);
$result = $jsonData['data'][0];
}
return $result;
}