我一直试图让一个简单的Ext.js应用程序工作,它从数据库中获取数据并将其显示在ext.js网格中,但我唯一得到的是“失败:真实”。 也许你可以向我指出错误。
这是index.php:
<html>
<head>
<script src="extjs/ext-dev.js" type="text/javascript"></script>
<script src="mainscript.js" type="text/javascript"></script>
</head>
<body>
<?php
$conn = mysql_connect('localhost','admin','1234','cdcol') or die ('Error connecting to mysql');
$task = '';
if ( isset($_POST['task'])){
$task = $_POST['task'];
}
switch($task){
case "LISTING":
getList();
break;
default:
echo "{failure:true}";
break;
}
function getList(){
$query = mysql_query("SELECT * FROM cdcol.cds");
$cds = array();
while($row = mysql_fetch_array($query)){
$cds[] = array('titel' => $row['titel'], 'jahr' => $row['jahr'],'interpret' => $row['interpret'], 'id' => $row['id']);
}
$jsonresult = json_encode(array('cds'=>$cds));
}
?>
</body>
这将是mainscript.js:
var cdDataStore;
var cdColumnModel;
var cdEditorGrid;
var cdWindow;
Ext.onReady(function(){
Ext.QuickTips.init();
cdDataStore = new Ext.data.Store({
id: 'cdDataStore',
proxy: new Ext.data.HttpProxy({
url: 'index.php',
method: 'POST'
}),
baseParams:{task: "LISTING"},
reader: new Ext.data.JsonReader({
root: 'results',
totalProperty: 'total',
id: 'id'
},[
{name: 'titel', type: 'string', mapping: 'titel'},
{name: 'interpret', type: 'string', mapping: 'interpret'},
{name: 'jahr', type: 'int', mapping: 'jahr'},
{name: 'id', type: 'int', mapping: 'id'}
]),
sortInfo:{field: 'jahr', direction: "ASC"}
});
cdColumnModel = new Ext.grid.ColumnModel(
[{
header: '#',
readOnly: true,
dataIndex: 'id',
width: 50,
hidden: false
},{
header: 'titel',
dataIndex: 'titel',
width: 150,
},{
header: 'interpret',
dataIndex: 'interpret',
width: 150,
},{
header: 'jahr',
readOnly: true,
dataIndex: 'jahr',
width: 50,
},{
header: 'id',
dataIndex: 'id',
width: 150,
readOnly: true
}]
);
cdColumnModel.defaultSortable= true;
cdEditorGrid = new Ext.grid.EditorGridPanel({
id: 'cdListingEditorGrid',
store:cdDataStore,
cm: cdColumnModel,
enableColLock:false,
clicksToEdit:1,
selModel: new Ext.grid.RowSelectionModel({singleSelect:false})
});
cdListingWindow = new Ext.Window({
id: 'cdListingWindow',
title: 'some cds',
closable:true,
width:700,
height:350,
plain:true,
layout: 'fit',
items: cdListingEditorGrid
});
cdDataStore.load();
cdListingWindow.show();
});
任何帮助或者不同的方法都会非常感激!
答案 0 :(得分:0)
你使用哪个extjs版本?
你确定发送参数“task”吗? (例如,使用Firefox与Firebug - 网络 - XHR - 发布)
我认为代理本身没有方法属性。
proxy: {
type: 'ajax',
url: 'index.php',
reader: {
type: 'json',
root: 'cds'
},
extraParams: {
'task': "LISTING"
},
actionMethods: {
read: 'POST'
}
}
你的php脚本必须返回一个json字符串!例如{'success': true, 'cds':[{"id":"27","titel":"xyz"
此外,您的架构看起来很奇怪。为什么没有单独的php文件?为什么不使用columnmodel?为什么要声明var?