1

私はこれが繰り返されることを知っています。しかし、私はそれを解決するために最善を尽くしましたが、すべて無駄でした. 単純なグリッド パネルでさえ入力できません!!! 明らかに私はextjsの初心者です。

私のjsコードは次のとおりです。

Ext.onReady(function(){
    var store = new Ext.data.JsonStore({        
        url: 'compare.php',             
                fields: ['name', 'area']
               });      

    store.load();
    var grid = new Ext.grid.GridPanel({
        store: store,
        columns: [
        {header: 'Name', width: 100, sortable: true, dataIndex: 'name'},
        {header: 'Position', width: 100, sortable: true, dataIndex: 'area'}          
        ],
        stripeRows: true,
        height:250,
        width:500,
        title:'DB Grid'
    });
    grid.render('db-grid');

});

私のphpは次のとおりです。

<html>
<head>
</head>
 <body bgcolor="white">
  <?php
  $link = pg_Connect('host=my_host port=5432 dbname=da_name user=postgres password=my_password');
  $sql = "SELECT name, area FROM \"TABLE\" LIMIT 10";
    if (!$link) {
        echo "error";
    } else {
    $result = pg_query($link, $sql);
    $rows = array();
    $totaldata = pg_num_rows($result);
    while($r = pg_fetch_assoc($result)) {
        $rows[] = $r;
    }
    //echo json_encode($rows);
    //echo json_encode(array('country' => $rows));
    echo '({"total":"'.$totaldata.'","country":'.json_encode($rows).'})';
    }
  ?>
  </body>
</html>

そして私のjsonは次のとおりです:

[
    {
        "total": "10",
        "country": [
            {
                "name": "CULTIV",
                "area": "1.10584619505971e-006"
            },
            {
                "name": "CULTIV",
                "area": "2.87818068045453e-006"
            },
            {
                "name": "CULTIV",
                "area": "6.96120082466223e-007"
            },
            {
                "name": "CULTIV",
                "area": "1.17171452984621e-007"
            },
            {
                "name": "CULTIV",
                "area": "1.25584028864978e-006"
            },
            {
                "name": "CULTIV",
                "area": "5.86309965910914e-007"
            },
            {
                "name": "CULTIV",
                "area": "4.12220742873615e-007"
            },
            {
                "name": "CULTIV",
                "area": "7.59690840368421e-006"
            },
            {
                "name": "CULTIV",
                "area": "2.47360731009394e-007"
            },
            {
                "name": "CULTIV",
                "area": "4.04940848284241e-005"
            }
        ]

これにはプロキシを設定する必要がありますか? 実際、私のアプリケーションはデータベースとは別のサーバーで実行されています。

4

2 に答える 2

1

経験はありませんが、その場合の代わりに関数PostgreSQLを使用することをお勧めします。pg_fetch_object()pg_fetch_assoc()

次のようなことを試してください:

while($obj = $result->pg_fetch_object()) {
$rows = $obj;
}    
echo '({"total":"'.$totaldata.'","country":'.json_encode($rows).'})';
于 2012-08-16T19:53:53.260 に答える
0

JSONの形式が正しくありません。Ext.data.JsonReader(JsonStoreを使用すると自動的に構成されます)は、リーダー構成で定義されrootたノードを持つJSONオブジェクトを想定しています。が未定義の場合、リーダーは例外をスローする必要があります。root

したがって、JsonReaderのルートを定義します。

var store = new Ext.data.JsonStore({        
    url: 'compare.php',
    root: 'country', // required!
    fields: ['name', 'area']
});

そして、JSONは次のようになります。

{
    "total": 10,
    "country": [{
        "name": "CULTIV",
        "area": "6.96120082466223e-007"
    },{
        ...
    }]
}
于 2012-08-22T00:27:36.323 に答える