我想打包一个 Sencha Touch 应用程序以部署到多个移动平台(iOS/Android)。我知道浏览器无法进行跨域 AJAX 请求,但是否可以在 Sencha Touch 应用程序中进行跨域 AJAX 调用?(没有服务器,使用 PhoneGap 之类的东西打包到 iOS/Android)
我想使用 AJAX 在 Sencha Touch 应用程序中访问第三方 API,但我的印象是我需要一个服务器来包装第三方 API 以避免跨域问题。有人请澄清。
我想打包一个 Sencha Touch 应用程序以部署到多个移动平台(iOS/Android)。我知道浏览器无法进行跨域 AJAX 请求,但是否可以在 Sencha Touch 应用程序中进行跨域 AJAX 调用?(没有服务器,使用 PhoneGap 之类的东西打包到 iOS/Android)
我想使用 AJAX 在 Sencha Touch 应用程序中访问第三方 API,但我的印象是我需要一个服务器来包装第三方 API 以避免跨域问题。有人请澄清。
JSONP
使用Ext.data.proxy.JsonP
. _
我不知道您的 API 是什么样子,但可以像这样使用它:
var store = Ext.create('Ext.data.Store', {
autoLoad: true,
//model: , //Your API
proxy: {
type: 'jsonp',
url : 'http://domain.com/request',
callbackKey: 'theCallbackFunction'
}
});
您可以使用 JSONP,但也可以使用普通的 JSON。
当文件是“本地的”(即包装在 phonegap 中)时,手机浏览器将允许跨域请求。
正如 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'
}
}
}
});