2011-09-05 89 views
0

我在週末之前問過這個問題,儘管遵循了這個建議,但仍然陷入了僵局。這次我會發布所有相關的代碼,希望有人能幫助我瞭解這一點。Ajax數據仍未加載到數據存儲中

重要注意事項:當我使用商店的數據[{json data}]參數靜態地將數據輸入到數據存儲區時,數據存儲和模型完美地工作。但使用Ajax代理做失敗(即使我可以在Chrome中看到的test.php被調用,又呼應了JSON數據(見下面的test.php)

這是我的店:

new Ext.data.Store({ 
     model: "SearchResult", 
     proxy: { 
      type: "ajax", 
      url : "test.php", 
      extraParams : 'test', 
      reader: { 
       type: "json", 
      } 
     }, 

    }); 

我加載它通過處理點擊按鈕時

這裏是在test.php的呼應了:!

<?php 
echo "[{stock: 'Tommy', storePhone: '353535', year: '1984', make: 'Ferrari', trim: 'trim', miles: '12345', storename: 'branch name' }]"; 
?> 

一直停留在這個這麼任何幫助非常感謝一會兒

回答

3

它; S不夠呼應一個字符串,它看起來像你的JSON ......你應該使用PHP的方法來編碼它...你比如這將是

<?php 
    $data = array(array('stock'=> 'Tommy', 'storePhone'=> 353535, 'year'=> '1984', 'make'=> 'Ferrari', 'trim'=> 'trim', 'miles'=> '12345', 'storename'=> 'branch name')); 
    echo json_encode($data); 
?> 
+0

感謝,你解決了我的問題:) –

0

您需要提供「success:true」屬性,並將數據放入JSON響應的根屬性中。

然後,您應該將root屬性添加到您的讀者配置。

{ 
    "success": true, 
    "rows": [ 
     { 
      "stock": "Tommy", 
      "storePhone": "353535", 
      "year": "1984", 
      "make": "Ferrari", 
      "trim": "trim", 
      "miles": "12345", 
      "storename": "branchname" 
     } 
    ] 
} 

您的商店:

new Ext.data.Store({ 
     model: "SearchResult", 
     proxy: { 
      type: "ajax", 
      url : "test.php", 
      extraParams : 'test', 
      reader: { 
       type: "json", 
       root: 'rows' 
      } 
     }, 

    }); 
+0

不是真的,......你並不需要提供一個成功:是的,但這是一個很好的設計,要知道什麼時候行動成功了...... – nscrob

0

這解決了問題 store.proxy.url = 'loader.php?user=' + var_here; store.load();