2013-03-08 2 views
0

Я пытаюсь создать добавить панели внутри панели, основанные на счете, возвращаемом файлом php. Тем не менее, я наткнулся на то, как использовать возвращаемые данные JSON. Кроме того, я не вижу, как вызов Ajax начинается, когда я проверяю использование firebug. Мой код, как показано ниже:ExtJS Ajax вызов не работает

App.js

var ds = Ext.create('Ext.data.Store',({ 
      proxy: { 
       type:'ajax', 
        url:'data.php', 
        reader: { 
       type : 'json',  
       id: 'Completion_ID', 
       root: "myInventory", 
       fields: 
         [{name: 'PMNumber', type: 'int', mapping: 'PMNumber'}, 
         ] 
        } 
      } 

      }) 
     ); 

Ext.onReady(function() 
{ 

ds.load(); 

Ext.create('Ext.panel.Panel', { 
    renderTo: document.getElementById('aa'), 
    title: 'Marks Entry', 
    height: 500, 
    width: 880, 
    bodyStyle:'padding:15px 15px 15px 15px', 
    layout: { 
      type: 'table', 
      //3 by 3 Grid 
      columns: parseInt([{ dataIndex: 'PMNumber'}]) 
     }, 
    items: [{ 
      // Blank Panels so html is '' 
      xtype:'panel', 
      html: '2003010001  ' 
     },{ 
      xtype:'panel', 
      html: '2003010002  ' 

     },{ 
      xtype:'panel', 
      html: '2003010003  ' 
     },{ 
      xtype:'panel', 
      html: '2003010004' 
     }, 
     { 
      xtype:'panel', 
      html: '2003010005' 
     }, 
     { 
      xtype:'panel', 
      html: '2003010006' 
     }, 
     { 
      xtype:'panel', 
      html: '2003010007' 
     }, 
     { 
      xtype:'panel', 
      html: '2003010008' 
     }, 
     { 
      xtype:'panel', 
      html: '2003010009' 
     }, 
     ],  
}); 
}); 

data.php

<?php 
//connection String 
$con = mysql_connect($myhost, $myuser, $mypass) or die('Could not connect: ' . mysql_error()); 
//Select The database 
$bool = mysql_select_db($myDB, $con); 
if ($bool === False){ 
    print "can't find $database"; 
} 
// Gather all pending requests 
$query = "SELECT 
count(*) AS PMNumber 
FROM marks " ; 
$result = mysql_query($query, $con); 
if (mysql_num_rows($result) > 0){ 
while($obj = mysql_fetch_object($result)) 
    { 
     $arr[] = $obj; 
    } 
// Now create the json array to be sent to our datastore 
$myData = array('myInventory' => $arr); 
echo json_encode($myData); 
return; 
exit(); 
} 
else { // If no requests found, we return nothing 
$myData = array('myInventory' => ''); 
echo json_encode($myData); 
return; 
exit(); 
} 
?> 

Данные JSON, возвращаемые в файл PHP при вызове независимо друг от друга:

{"myInventory":[{"PMNumber":"3"}]} 

HTML файл:

<html> 
<head> 
    <title>Hello Ext</title> 

    <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css"> 
    <script type="text/javascript" src="../extjs/ext-debug.js"></script> 
    <script type="text/javascript" src="js/app.js"></script> 
</head> 
<body style="padding: 50px 20px 0 20px;"> 
    <div id="aa" style="wdith:900px;height:500px"></div> 
</body> 
</html> 

Кто-нибудь знает, где я не хватает?

Благодаря

+0

Обратите внимание: 'mysql_ *' устарел и будет удален в будущем. – itachi

+0

Спасибо Itachi, я просто тестировал extJS с MySQL, поэтому захватил этот пример кода – Satya

ответ

0

Ext.data.Store является объектом, который управляет табличными данными от имени виджетов с привязкой к данным или другим потребителей данных. Он абстрагирует данные данных от деталей сбора и преобразования данных.

Если вы хотите, чтобы магазин загружал данные напрямую (в отличие от привязки к нему одного или нескольких виджетов), вы можете позвонить его "load" method.

Прежде чем продолжить, я настоятельно рекомендую вам прочитать white paper на эту тему, а также остальную часть архитектурной документации ExtJS.

+0

Привет, я изменил код в соответствии с вашим предложением и вижу, как происходит вызов Ajax, однако я все еще придерживаюсь того, как использовать значение, PMNumber в ответе JSON. Любые указатели? – Satya

+0

Попробуйте ds.getAt (0) .data.PMNumber. Но серьезно, вы должны внимательно прочитать об этом, вместо того, чтобы ожидать, что StackOverflow проведет вас через каждый шаг процесса, потому что функции данных Ext богаты, а способ, которым вы в конечном итоге хотите использовать этот материал, - это не настоятельные призывы, такие как это, но, проводя ваши модели и взгляды вместе, как это предусмотрено рамками. – Jollymorphic

+0

Спасибо большое! Большое спасибо за этот красивый выговор! Я понял, что мне не хватает! – Satya