如何在Sencha Touch中捕获使用PHP生成的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
}
});
我的JSON数据就像(由getEvents.php生成):
{
"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 :
答案 0 :(得分:2)
您需要PHP服务器以JSONP响应,而不是普通的JSON。 'P'表示JSON-with-padding。您指定的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 :(得分:1)
使用json时可以使用
echo utf8_encode(json_encode($json));
当移动到jsonp时我做了
echo $_GET['callback'] . '('.json_encode($results).')';