2013-03-08 6 views
0

php 파일에서 반환 된 개수에 따라 패널 내부에 패널을 추가하려고합니다. 그러나, 나는 반환 된 JSON 데이터를 사용하는 방법에 비틀 거리고있다. 또한 방화범을 사용하여 검사 할 때 Ajax 호출이 시작되지 않습니다. 내 코드는 다음과 같습니다 :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(); 
} 
?> 

PHP 파일에 의해 반환 된 JSON 데이터를 독립적으로 불리는 :

{"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, MySQL을 사용하여 extJS를 테스트 했으므로이 예제 코드를 가져 왔습니다. – Satya

답변

0

Ext.data.Store은 데이터 바인딩 된 위젯 또는 데이터의 다른 소비자를 대신하여 테이블 형식의 데이터를 관리하는 객체입니다. 데이터 수집 및 변환의 세부 사항에서 벗어난 데이터 소비자를 추상화합니다.

스토어에 데이터를 직접로드하도록 요청하려면 (하나 이상의 위젯을 바인딩하는 대신) "load" method을 호출하면됩니다.

계속 진행하기 전에이 주제에 대한 white paper과 나머지 ExtJS 아키텍처 설명서를 읽어 보시기 바랍니다.

+0

안녕하세요, 귀하의 제안에 따라 코드를 변경했지만 Ajax 호출이 일어나는 것을 볼 수는 있습니다. 그러나 나는 여전히 가져온 값을 사용하는 방법에 집착하고 있습니다. JSON 응답의 PMNumber 키. 어떤 포인터? – Satya

+0

ds.getAt (0) .data.PMNumber를 시도하십시오. 그러나 진지하게, 당신은이 기사에 대해 철저하게 읽어야합니다. Ext 데이터 기능이 풍부하고 결국이 물건을 사용하기를 원하는 방식이 명령형 호출이 아니기 때문에 StackOverflow가 프로세스의 모든 단계를 수행하도록 기대하는 대신에 프레임 워크가 의도 한대로 모델과 뷰를 함께 연결하면됩니다. – Jollymorphic

+0

고마워요! 그 아름다운 견책을 가져 주셔서 대단히 감사합니다! 나는 내가 놓친 것을 알아 냈다 !! – Satya

관련 문제