Puedes crear un file.js.php me explico en un js puedes tener partes dinamicas generadas por php si el resultado es javascript valido van a ejecutarse como tal... debes poner extension .php para que el servidor se entere de que debe ejecutarlo como tal antes de pasarlo al cliente.
Ahora bien ese data.php que muestras tiene algun error
echo es
echo no
Echo.
Por otro lado la impresion del array en fomato json directamente sin asignar a una variable no lo va a interpretar el script js... excepto que leas el fichero de alguna manera y lo asignes a una variable....
Si modificas la ultima linea a
echo "var datosjson=".json_encode($arr).";";
eso generara en el fichero de salida una variable javascript con el contenido en formato json... apartir de aqui puedes pasarlo a un array javascript y usarlo en tu script.
Código Javascript
:
Ver original<?php
mssql_connect('(local)', 'sa', '.') or die("No fue posible conectar con el servidor");
mssql_select_db('demo') or die("No fue posible selecionar la base de datos");
$sql="select * from pruebas";
$arr = array();
$rs = mssql_query($sql) or die;
while($obj = mssql_fetch_object($rs)){
$arr[] = $obj;
}
echo "var datosjson=".json_encode($arr).";";
?>
/*!
* Grid de Prueba
*/
SampleGrid = function(limitColumns){
function italic(value){
return '<i>' + value + '</i>';
}
function change(val){
if(val > 0){
return '<span style="color:green;">' + val + '</span>';
}else if(val < 0){
return '<span style="color:red;">' + val + '</span>';
}
return val;
}
function pctChange(val){
if(val > 0){
return '<span style="color:green;">' + val + '%</span>';
}else if(val < 0){
return '<span style="color:red;">' + val + '%</span>';
}
return val;
}
var columns = [
{
id:'company',
header: "Company",
width: 160,
sortable: true,
dataIndex: 'company'
},{
header: "Price",
width: 75,
sortable: true,
renderer: Ext.util.Format.usMoney,
dataIndex: 'price'
},{
header: "Change",
width: 75,
sortable: true,
renderer: change,
dataIndex: 'change'
},{
header: "% Change",
width: 75,
sortable: true,
renderer: pctChange,
dataIndex: 'pctChange'
},{
header: "Last Updated",
width: 85,
sortable: true,
renderer: Ext.util.Format.dateRenderer('m/d/Y'),
dataIndex: 'lastChange'
}];
// allow samples to limit columns
if(limitColumns){
var cs = [];
for(var i = 0, len = limitColumns.length; i < len; i++){
cs.push(columns[limitColumns[i]]);
}
columns = cs;
}
SampleGrid.superclass.constructor.call(this, {
store: new Ext.data.Store({
reader: new Ext.data.ArrayReader({}, [
{name: 'company'},
{name: 'price', type: 'float'},
{name: 'change', type: 'float'},
{name: 'pctChange', type: 'float'},
{name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
]),
data: [
['3m Co',71.72,0.02,0.03,'9/1 12:00am'],
['Alcoa Inc',29.01,0.42,1.47,'9/1 12:00am'],
['Altria Group Inc',83.81,0.28,0.34,'9/1 12:00am'],
['American Express Company',52.55,0.01,0.02,'9/1 12:00am'],
['American International Group, Inc.',64.13,0.31,0.49,'9/1 12:00am']
]
}),
columns: columns,
autoExpandColumn: 'company',
autoScroll : true,
//forceFit: true,
height:250,
width:600
});
}
Ext.extend(SampleGrid, Ext.grid.GridPanel);
Solo deberias acceder a la variable datosjson la qual contendra un string en formato json valido ...
http://stackoverflow.com/questions/4...-in-javascript aqui tienes ejemplos de como trabajar con ella.