Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Передача данных клиенту (https://javascript.ru/forum/extjs/11529-peredacha-dannykh-klientu.html)

DenQ 28.08.2010 22:16

Передача данных клиенту
 
Здравствуйте.
Я пытаюсь написать приложение, которое из файла php, передает данные в json-формате, js(клиенту), с тем чтобы последний распределил эти данные по гриду.
Вот что я имею на данный момент:
<?php
	if (($_REQUEST) && ($_REQUEST['ajax_request']) == 'yes') {
		$mas = array('company' => "q1w2e3r4t5y6u7", 'price' => "12");
		$all = array('cast' => $mas);
		
		echo json_encode($all);

		exit();
	}
?>
<html>
	<head>
		<title>p003.com</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="js/ext/resources/css/ext-all.css" />
        <link rel="stylesheet" type="text/css" href="js/ext/examples/grid/grid-examples.css" />

        <script type="text/javascript" src="js/ext/adapter/ext/ext-base.js"></script>
        <script type="text/javascript" src="js/ext/ext-all.js"></script>
        <script type="text/javascript" src="js/grid_example.js"></script>
	</head>
<body>
	<div id = 'grid-example'></div>
</body>
</html>

Ext.onReady(function(){
    // create the data store
	var myStore = new Ext.data.ArrayStore( {
		proxy: new Ext.data.HttpProxy({
			url     	: 'index.php',
			method  	: 'POST'
		} ),
		baseParams: {
			ajax_request		: "yes"
		},
		reader: new Ext.data.JsonReader({
			root            	: 'cast',
			totalProperty   	: 'total'
		}),
		fields: [
		{
			name		: 'company',
			type		: 'string'
		}, {
			name		: 'price',
			type		: 'string'
		}
		]
	});
	myStore.load();
	
    // create the Grid
    var grid = new Ext.grid.GridPanel( {
        store	: myStore,
        columns: [
			{
				id		: 'company',
				header	: 'Company', 
				width	: 160,
				dataIndex	: 'company'
			}, {
				header	: 'Price', 
				width	: 75,  
				dataIndex	: 'price'
			}
        ],
        autoExpandColumn	: 'company',
        height			: 350,
        width			: 600,
        title			: 'Array Grid',
    });
    

    grid.render('grid-example');
});


Я лично, думаю, что проблема в коде php, хотя как знать. Надеюсь Вы подскажите мне...

ЗЫ. Просьба сильно не пинать, начинающий в этом вопросе...

DooMer 30.08.2010 15:57

$mas = array(array('company' => "q1w2e3r4t5y6u7", 'price' => "12"));

а так ?

Ex_Soft 30.08.2010 16:27

Формат д.б. таким:
Код:

{
  success: true,
  total: 1,
  cast: [{company: "q1w2e3r4t5y6u7", price: "12"}]
}

См. Ext.data.JsonStore

DenQ 30.08.2010 23:18

Случайно так зашел, думаю, дай гляну, может ответил кто...
В общем, сделал следующим вечером, следующим образом:
<?php
    if (($_REQUEST) && ($_REQUEST['ajax_request']) == 'yes') {
        $mas = array('company'=>'cas', 'price'=>'ds');
            $all = array($mas, $mas);
            echo json_encode($all);
            exit();
    }
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" />
        <link rel="stylesheet" type="text/css" href="ext/examples/grid/grid-examples.css" />

        <script type="text/javascript" src="js/ext/adapter/ext/ext-base.js"></script>
        <script type="text/javascript" src="js/ext/ext-all.js"></script>
        <script type="text/javascript" src="js/grid-example.js"></script>
    </head>
    <body>
        <div id="b1"></div>
        <div id="grid-example"></div>

    </body>
</html>
Ext.onReady(function(){
    // create the data store
	var myStore = new Ext.data.ArrayStore( {
		proxy: new Ext.data.HttpProxy({
			url     	: 'index.php',
			method  	: 'POST'
		} ),
		baseParams: {
			ajax_request		: "yes"
		},
		reader: new Ext.data.JsonReader({
//			id				: 'id',
			root            	: 'cast',
			totalProperty   	: 'total'
		}),
		fields: [
		{
			name		: 'company',
			mapping         : 'company',
			type		: 'string'
		}, {
			name		: 'price',
			mapping         : 'price',
			type		: 'string'
		}
		],
		listeners :{
			load : function(s, rec, obj){
				alert(s.getCount());
			}
		}

	});
	myStore.load();

    // create the Grid
    var grid = new Ext.grid.GridPanel( {
        store	: myStore,
        columns: [
			{
				id		: 'company',
				header	: 'Company',
				width	: 160,
				sortable	: true,
				dataIndex	: 'company'
			}, {
				header	: 'Price',
				sortable	: true,
				width	: 75,
				dataIndex	: 'price'
			}
        ],
        autoExpandColumn	: 'company',
        height			: 350,
        width			: 600,
        title			: 'Array Grid',
    });


    grid.render('grid-example');
});

Подскажите, если что неправильно, пожалуйста...

Ex_Soft 31.08.2010 10:19

Скажите, Вы топик по диагонали читаете?

DooMer 31.08.2010 10:45

DenQ,
вам в предыдущих 2х постах указали на ошибку

echo json_encode(
array('cast'=>$all,'total'=>2,"success"=>true)
);


Часовой пояс GMT +3, время: 09:04.