我是不是需要在 sencha touch 应用程序中进行 ajax 调用的服务器?
Posted
技术标签:
【中文标题】我是不是需要在 sencha touch 应用程序中进行 ajax 调用的服务器?【英文标题】:Do I need a server for ajax calls in a sencha touch app?我是否需要在 sencha touch 应用程序中进行 ajax 调用的服务器? 【发布时间】:2013-01-01 07:25:59 【问题描述】:我想打包一个 Sencha Touch 应用程序以部署到多个移动平台(ios/android)。我知道浏览器无法进行跨域 AJAX 请求,但是否可以在 Sencha Touch 应用程序中进行跨域 AJAX 调用? (没有服务器,使用 PhoneGap 之类的东西打包到 iOS/Android)
我想使用 AJAX 在 Sencha Touch 应用程序中访问第三方 API,但我的印象是我需要一个服务器来包装第三方 API 以避免跨域问题。有人请澄清。
【问题讨论】:
【参考方案1】:使用JSONP
可以使用Ext.data.proxy.JsonP
进行跨域AJAX 请求。
我不知道您的 API 是什么样子,但可以像这样使用它:
var store = Ext.create('Ext.data.Store',
autoLoad: true,
//model: , //Your API
proxy:
type: 'jsonp',
url : 'http://domain.com/request',
callbackKey: 'theCallbackFunction'
);
【讨论】:
【参考方案2】:您可以使用 JSONP,但也可以使用普通 JSON。
当文件是“本地”文件时,手机浏览器将允许跨域请求,即包装在 phonegap 中。
【讨论】:
【参考方案3】:正如 A1rPun 所说,使用 Ext.data.proxy.JsonP 的 JSONP(带填充的 JSON)可以实现跨域 AJAX 请求
Sencha touch-2 方法:
Ext.define('YourStore',
extend: 'Ext.data.Store',
config:
fields: ['field1', 'field2', 'field3'],
proxy:
type: 'jsonp',
url:'YourUrl',
callbackKey: 'jsoncallback',
extraParams :
method : 'YourUrl.method',
api_key : 'PUTYOURKEYHERE',
format : 'json',
nojsoncallback : 1
,
reader:
type: 'json'
);
【讨论】:
以上是关于我是不是需要在 sencha touch 应用程序中进行 ajax 调用的服务器?的主要内容,如果未能解决你的问题,请参考以下文章
Sencha touch - 是不是可以在客户端存储大型数据库
Sencha Touch 2 - 如何检查 ViewPort 中是不是存在项目
sencha touch 2.2.1 检查控制器中的商店是不是为空?