2013-07-08 60 views
0

我有一個組合框,我想從PHP服務器
獲取數據這是我的index.html代碼http://jsfiddle.net/UQcgA/ExtJS的 - 組合框與PHP文件中的數據不能正常工作

這是我data.php文件。
但是當我點擊連擊再沒有什麼表演:(。我該如何解決,多虧

<?php 
// function to create json 
function GetCategories() { 
    $categories = "{'rows':["; 
    $categories = "{'id':'1', 'name':'Category 1'},"; 
    $categories .= "{'id':'2', 'name':'Category 2'},"; 
    $categories .= "{'id':'3', 'name':'Category 3'}"; 
    $categories .= "]}"; 
    return $categories; 
} 
echo GetCategories(); // sent to client 
?> 
+0

返回的JSON字符串是什麼樣的? – existdissolve

+0

@existdissolve it look {'id':'1','name':'Category 1'},{'id':'2','name':'Category 2'},{'id':'3 ''''name':'Category 3'}]} – freestyle

+0

它需要看起來像:{'rows':[{'id':'1','name':'Category 1'},{'id': '2','name':'Category 2'},{'id':'3','name':'Category 3'}]}。您在代碼中缺少串聯。但是,穆薩建議,如果你能幫到你,你真的不應該手工構建JSON。 – existdissolve

回答

0

的主要問題是與您的商店的定義。您使用的是定義的ExtJS 3,這是一個正確的方法在ExtJS的4.1定義店:

 var values = new Ext.data.Store({ 
      fields: [ 
       {name: 'id', type: 'integer'}, 
       {name: 'name', type: 'string'} 
      ], 
      proxy: new Ext.data.HttpProxy({ 
       url: 'data.php', 
       reader: { 
        type: 'json', 
        root: 'rows' 
       } 
      }), 
      autoLoad: true 
     }); 

你必須與你json data太(你錯過了在第2行也是一個週期)的問題。此將工作:

// function to create json 
function GetCategories() { 
    $categories = '{"rows": ['; 
    $categories .= '{"id": "1", "name": "Category 1"},'; 
    $categories .= '{"id": "2", "name": "Category 2"},'; 
    $categories .= '{"id": "3", "name": "Category 3"}'; 
    $categories .= "]}"; 
    return $categories; 
} 
echo GetCategories(); // sent to client 
?> 

注意:使用json_encode構建JSON字符串始終是最佳做法,請參閱this answer

+0

我在http://www.java2s.com/Code/JavaScript/Ext-JS/UseJsonReaderastheStorereader.htm找到了定義false ?:( – freestyle

+0

你確定它是用於ExtJS 4.1嗎? – vahissan

+0

我用ExtJS4.1 :) – freestyle