2011-06-23 72 views
0

如何獲取在Sencha Touch中使用PHP生成的JSON數據?有沒有人知道一個很好的教程呢?使用Sencha Touch獲取JSON數據

我試圖使用JSON數據的代碼如下

Ext.util.JSONP.request({ 
    url: 'proc/getEvents.php', 
    callbackKey: 'callback', 
    callback: function(data) { 
     var lists = data.results; 
     timeline.update(lists); // Update events lists 
    } 
}); 

就像(由getEvents.php產生的)我JSON數據來獲得:

{ 
    "sample":[ 
     { 
     "id":"1", 
     "name":"131\/E Address", 
     "desc":"This is where I live!!", 
     "lat":"0", 
     "lon":"0", 
     "starttime":"0", 
     "endtime":"0", 
     "flag":"0" 
     }, 
     { 
     "id":"2", 
     "name":"INOX", 
     "desc":"Central Mall", 
     "lat":"0", 
     "lon":"0", 
     "starttime":"0", 
     "endtime":"0", 
     "flag":"0" 
     } 
    ] 
} 

現在我想以顯示它在模板中。

tpl: [ 
     '<tpl for=".">', 
      '<div class="details">', 
       '<h2>{name}</h2>', 
       '<p>{desc}</p>', 
      '</div>', 
     '</tpl>' 
    ] 

任何人都可以幫助我找出問題所在?我的JavaScript控制檯說(使用getEvents.php)

Resource interpreted as Script but transferred with MIME type text/html. 
getEvents.php:1Uncaught SyntaxError: Unexpected token : 

回答

2

您將需要您的PHP服務器以JSONP響應,而不是純JSON。 'P'表示帶填充的JSON。該callbackKey指定需要由PHP生成如下:

callback({"sample":[ 
    { 
    "id":"1", 
    "name":"131\/E Address", 
    "desc":"This is where I live!!", 
    "lat":"0", 
    "lon":"0", 
    "starttime":"0", 
    "endtime":"0", 
    "flag":"0" 
    }, { /*---etc---*/ }); 

此外,爲了使MIME類型問題消失,在PHP中,任何迴音之前把這個代碼或打印件的完成:

header('Cache-Control: no-cache, must-revalidate'); 
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // never, ever cache 
    header('Content-type: application/json'); 
1

在使用JSON這個作品

echo utf8_encode(json_encode($json)); 

當移動到JSONP我做

echo $_GET['callback'] . '('.json_encode($results).')';