我是Sencha Touch的新手,我试着了解它如何与网络服务配合使用。我的以下代码适用于我在本地Web服务器上托管的xml文件。当我尝试使用公共网络服务时,我什么也得不到。奇怪的是,xml文件完全相同,只有一个代码字符串不同。我的意思是,如果要在web服务器上托管以下xml文件并将其设置为代理网址,那么一切都会好的,并且会显示数据。
这是我的js-code:
Ext.require([
'Ext.Panel',
'Ext.tab.Panel',
'Ext.Ajax'
]);
Ext.application({
name: 'Sencha',
launch: function() {
Ext.regModel('XMLUser', {
fields: ['ID', 'CUSTOMERID', 'TOTAL']
});
var XMLStore = new Ext.data.Store({
model: 'XMLUser',
implicitIncludes: true,
method:'get',
proxy: {
type: 'ajax',
url : 'http://www.thomas-bayer.com/sqlrest/INVOICE/605',
//url: 'test1.xml',
reader: {
type : 'xml',
record: 'INVOICE'
}
},
autoLoad: true
});
var XMLTpl = new Ext.XTemplate(
'<tpl for=".">',
'<div class="id-class" id="{ID}">{ID}',
'<div>{CUSTOMERID}',
'<div>{TOTAL}',
'</tpl>'
);
Ext.create("Ext.TabPanel", {
fullscreen: true,
tabBarPosition: 'bottom',
items: [
{
xtype: 'list',
title: 'Blog',
iconCls: 'home',
itemTpl: XMLTpl,
store: XMLStore,
singleSelect : true
}
]
}).setActiveItem(0);
}
});
以下是xml文件的示例(您将通过地址获取它:http://www.thomas-bayer.com/sqlrest/INVOICE/605):
<?xml version="1.0"?><INVOICE xmlns:xlink="http://www.w3.org/1999/xlink">
<ID>605</ID>
<CUSTOMERID xlink:href="http://www.thomas-bayer.com/sqlrest/CUSTOMER/505/">505</CUSTOMERID>
<TOTAL>209505</TOTAL>
</INVOICE>
答案 0 :(得分:0)
你必须设置一个跨代的PHP代理,这是我的代理调用xml google webservice的例子:
型号:
Ext.regModel('ModelTrajectoire', {
fields: [
{
name: 'lat',
},
{
name: 'lng'
}
]
});
商店:
var StoreTrajectoire = new Ext.data.Store({
model : 'ModelTrajectoire',
autoLoad: true,
storeId: 'StoreTrajectoire',
proxy: {
type:'ajax',
url: 'proxy.php',
reader: {
type: 'xml',
record: 'step'
}
}
});
proxy.php:
// type de retour
header('Content-type: text/xml');
// URL
$requestURL = "http://maps.googleapis.com/maps/api/directions/xml?origin=Chicago,IL&destination=Los+Angeles,CA&sensor=false" ;
//Getting data from URL requested
$handle = fopen($requestURL, "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}
这对我有用nikel