我开始了解Sencha Touch 2.所以,我有很多问题要问! ^^让我们研究一下。 现在我有一个像json的数据:
{ 结果:“成功”, 国民: [ “阿富汗”, “阿尔巴尼亚”, “阿尔巴尼亚”, “阿尔及利亚”, “美属萨摩亚”, “安道尔” ] } 的
的的
然后,我将从url:nation.php文件加载它。 如何将其加载到我的选择字段。??????
分享和支持我。谢谢:)。
答案 0 :(得分:2)
我不知道如何在Sencha Architect 2中做到这一点(我没有使用它)..但仍然
而不是在没有尝试的情况下提出问题(我的意思是你没有在这里发布尝试过的代码),最好先从Sencha Touch文档开始。
无论如何,您可以按照以下方式进行操作
<强>模型强>
Ext.define('AppName.model.countries', {
extend : 'Ext.data.Model',
config: {
fields: [
{name: 'name', convert: function(value, record) {
return record.raw;
}}
],
}
});
商品强>
var myStore = Ext.create("Ext.data.ArrayStore", {
model : 'AppName.model.countries',
proxy: {
type: "ajax",
url : "nation.php",
reader: {
type: 'json',
rootProperty : function(data) {
return data.national;
}
}
},
autoLoad: true
});
在视图中选择字段
Ext.create('Ext.form.Panel', {
fullscreen: true,
items: [{
xtype: 'selectfield',
store: myStore ,
valueField:'name',
displayField:'name'
}]
});
答案 1 :(得分:1)
借助Viswa的支持。 :)我发现这个问题 - XMLHttpRequest无法加载。 Access-Control-Allow-Origin错误(浏览器策略安全性)不允许使用Origin。 Sencha Touch文档说:“当您需要从运行应用程序的域以外的域加载数据时,JsonP代理非常有用。如果您的应用程序在http://domainA.com上运行,则无法使用Ajax加载其数据来自http://domainB.com,因为浏览器禁止跨域ajax请求。
“此外,我们需要做的就是 - ”在您的Web服务器中实现所有api“并遵循JsonP的格式代码:(在PHP中)
$callback = $_REQUEST['callback'];// check callbackkey
// Create the output object.
$output = array('a' => 'Apple', 'b' => 'Banana');// output data.
//start output
if ($callback) {
header('Content-Type: text/javascript');
echo $callback . '(' . json_encode($output) . ');';
} else {
header('Content-Type: application/x-json');
echo json_encode($output);
}
如果。使用Sencha Touch 2.1,您可以使用:
Ext.data.JsonP.request({
url: 'http://otherdomain/svn_visaapi/trunk/api/visa_api.php/test_json',
callbackKey: 'callback',
success: function(result) {
console.log(result);
//Your success function here...
}
});
- 如果使用Sencha Architect,您可以使用Store.proxy.JsonP来调用api。 - 阅读更多文档Sencha Touch 2.1来查看。