我是不是需要在 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 检查控制器中的商店是不是为空?

iPhone Sencha Touch:我需要在哪个 JS/HTML 文件中启动我的应用程序?

重新启动 Sencha Touch 应用程序

是否仍需要PhoneGap 才能将Sencha Touch 2 应用程序放入应用商店?