我有窗體和網格。用戶必須在表單域中輸入數據,然後在網格中顯示相關記錄。網格商店配置拋出「未捕獲TypeError:無法讀取屬性」緩衝「的未定義」
我想實現一個搜索表單,例如:用戶將輸入學生的姓名和性別,然後將獲得一個網格,所有學生都有相同的名稱和性別。
因此,我使用Ajax將表單字段值發送到PHP,然後創建將在網格存儲中使用的json_encode
。
我真的不確定我的想法是否好。但我還沒有找到另一種方式來做到這一點。
問題是在我的商店有一個錯誤,但我無法弄清楚它是什麼。我得到這個錯誤: Uncaught TypeError: Cannot read property 'buffered' of undefined
筆者認爲:
{
xtype: 'panel',
layout: "fit",
id: 'searchResult',
flex: 7,
title: '<div style="text-align:center;"/>SearchResultGrid</div>',
items: [{
xtype: 'gridpanel',
store: 'advSearchStore',
id: 'AdvSearch-grid',
columns: [{
xtype: 'gridcolumn',
dataIndex: 'name',
align: 'right',
text: 'name'
}, {
xtype: 'gridcolumn',
dataIndex: 'gender',
align: 'right',
text: 'gender'
}
],
viewConfig: {
id: 'Arr',
emptyText: 'noResult'
},
requires: ['MyApp.PrintSave_toolbar'],
dockedItems: [{
xtype: 'PrintSave_tb',
dock: 'bottom',
}]
}]
}
我的控制器:
.
.
.
xmlhttp.open("GET","AdvSearch.php?search_name="+search_name,true);
xmlhttp.send(null);
我的PHP腳本:
if (!$con) {
throw new Exception("Error in connection to DB");
}
$query ="SELECT name, gender FROM students WHERE name ILIKE '%$search_name%' ";
$result = pg_query($query);
while ($row = pg_fetch_array($result)) {
$Arr[] = array('name' => $row[0], 'gender' => $row[1]);
}
$searchResult_list = array();
$searchResult_list['success'] = true;
$searchResult_list['Arr'] = $Arr;
$searchResult_list['totalCount'] = count($searchResult_list['Arr']);
echo json_encode($searchResult_list);
if (!$result)
die("Error in query: " . pg_last_error());
pg_close($con);
我的商店,型號:
Ext.define('AdvSearchPost', {
extend: 'Ext.data.Model',
proxy: {
type: 'ajax',
url: 'AdvSearch.php',
reader: {
type: 'json',
root: 'Arr',
totalProperty: 'totalCount'
}
},
fields: [{
name: 'name'
}, {
name: 'type_and_cargo'
}
]
});
advSearchStore = Ext.create('Ext.data.Store', {
pageSize: 10,
model: 'AdvSearchPost'
});
非常感謝!錯誤消失了,但仍然沒有在網格中顯示,即使它在螢火蟲中成功返回。你有什麼建議? – Shadin
@Oxi不客氣:)如果沒有來自服務器的JSON響應,這很難分辨出來。但我想這取決於返回的JSON和閱讀器配置。你必須檢查你的JSON是否被加密並且你的閱讀器已被正確配置(全部屬性,根屬性,id屬性等等) – sra
好的,我會檢查它。很多謝謝:) – Shadin