sencha touch结合webservice读取jsonp数据详解
sencha touch读取jsonp数据主要依靠Ext.data.JsonP组件,在mvc的store文件中定义代码如下:
Ext.define('eparkapp.store.ParksNearby',{
extend:'Ext.data.Store',
requires: ['Ext.data.JsonP'],
config:{
model: 'eparkapp.model.Park',
autoLoad: true,
proxy: {
type: 'jsonp',
url: 'http://192.168.1.103/androidserv/PublicAppServ.asmx/ListNearInfo',
reader:{
type: 'json',
rootProperty: 'data'
},
extraParams: {
userId: 'll',
lng: '123',
lat: '39',
key: 'abc123'
},
callbackKey: 'callback'
},
sorters: [{ property: 'Range', direction: 'ASC'}]
}
});
其中重要的是url的写法,.asmx后增加webservice的方法名,传给webservice的参数使用extraParams配置项。另外callbackKey一定要加上,值可设置为默认的callback。
webservice的写法
using System;
using System.Configuration;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Script.Serialization;
using System.Web.Script.Services; namespace MobileServ
{
/// <summary>
/// PublicAppServ 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
[System.Web.Script.Services.ScriptService]
public class PublicAppServ : System.Web.Services.WebService
{ #region 服务 [WebMethod(Description = "获得测试数据的列表")]
public void ListNearInfo(string userId, string lng, string lat, string key)
{
HttpContext.Current.Response.ContentType = "application/json;charset=utf-8";
string jsonCallBackFunName = "callback";
if (HttpContext.Current.Request.Params["callback"]!=null)
jsonCallBackFunName = HttpContext.Current.Request.Params["callback"].ToString();
string result = string.Empty;
if (key == ConfigurationManager.AppSettings["WSKey"])
{
List<ParkInfo> lisPark = GetData();
result = "{success: true,data:[";
for (int i = ; i < lisPark.Count; i++)
{
result += "{";
result += "Name:'" + lisPark[i].Name + "'";
result += ",Address:'" + lisPark[i].Address + "'";
result += ",Range:" + lisPark[i].Range;
result += ",Price:" + lisPark[i].Price;
result += ",Count:" + lisPark[i].Count.ToString();
result += "}";
if (i < lisPark.Count - )
result += ",";
}
result += "]}";
}
HttpContext.Current.Response.Write(string.Format("{0}({1})", jsonCallBackFunName, new JavaScriptSerializer().Serialize(result))); } private List<ParkInfo> GetData()
{
List<ParkInfo> lisPark = new List<ParkInfo>();
ParkInfo pinfo1 = new ParkInfo();
pinfo1.Name = "测试路1";
pinfo1.Address = "测试地址1";
pinfo1.Range = "2.5";
pinfo1.Price = "";
pinfo1.Count = "";
lisPark.Add(pinfo1);
ParkInfo pinfo2 = new ParkInfo();
pinfo2.Name = "测试路2";
pinfo2.Address = "测试地址2";
pinfo2.Range = "3.2";
pinfo2.Price = "";
pinfo2.Count = "";
lisPark.Add(pinfo2);
ParkInfo pinfo3 = new ParkInfo();
pinfo3.Name = "测试路3";
pinfo3.Address = "测试地址3";
pinfo3.Range = "3.2";
pinfo3.Price = "";
pinfo3.Count = "";
lisPark.Add(pinfo3);
return lisPark;
} #endregion 服务
}
}
需要注意的是,webservice通过HttpContext.Current.Request.Params["callback"]来读取sencha touch从客户端发来的跨域请求的回调函数名callback。再把这个函数名加入到返回的json之前。实现客户端的跨域读取。
webservice的web.config配置节system.web下一定要加上如下配置项,否则sencha touch无法读取webservice的数据。
<webServices>
<protocols>
<add name="HttpPost"/>
<add name="HttpGet"/>
</protocols>
</webServices>
一切配置完成后,数据就能在view中展现出来。
sencha touch结合webservice读取jsonp数据详解的更多相关文章
- InheritableThreadLocal类原理简介使用 父子线程传递数据详解 多线程中篇(十八)
上一篇文章中对ThreadLocal进行了详尽的介绍,另外还有一个类: InheritableThreadLocal 他是ThreadLocal的子类,那么这个类又有什么作用呢? 测试代码 p ...
- linux驱动由浅入深系列:高通sensor架构实例分析之三(adsp上报数据详解、校准流程详解)【转】
本文转载自:https://blog.csdn.net/radianceblau/article/details/76180915 本系列导航: linux驱动由浅入深系列:高通sensor架构实例分 ...
- 利用rtklib处理GPS以及北斗数据详解
利用rtklib开源代码处理GPS以及北斗数据详解 在GNSS领域最基础的工作是这些GNSS系统的定位工作,对于绝大多数研究者,自己着手完成这些工作是一个"鸡肋":完全独立设计的话 ...
- android bundle存放数据详解
转载自:android bundle存放数据详解 正如大家所知道,Activity之间传递数据,是将数据存放在Intent或者Bundle中 例如: 将数据存放倒Intent中传递: 将数据放到Bun ...
- MySQL数据库使用mysqldump导出数据详解
mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.接下来通过本文给大家介绍MySQL数 ...
- 【笔记】Pandas分类数据详解
[笔记]Pandas分类数据详解 Pandas Pandas分类数据详解|轻松玩转Pandas(5) 参考:Pandas分类数据详解|轻松玩转Pandas(5)
- Farseer.net轻量级开源框架 入门篇:添加数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 分类逻辑层 下一篇:Farseer.net轻量级开源框架 入门篇: 修改数据详解 ...
- Farseer.net轻量级开源框架 入门篇:修改数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 添加数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 删除数据详解 ...
- Farseer.net轻量级开源框架 入门篇:删除数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 修改数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 查询数据详解 ...
随机推荐
- php必备树状数组处理方法
thinkphp必备公共方法 /** * 子元素计数器 * @param array $array * @param int $pid * @return array */ function arra ...
- RAID磁盘恢复方法之一Winhex镜像硬盘与镜像中恢复数据图文
winhex镜像硬盘和ghost备份是完全不同的,ghost只能克隆或者镜像分区内正常的数据,删除的数据他是不会克隆的,所以在数据恢复应用中,ghost对我们来讲作用就不大了,而使用winhex备份( ...
- python 中sshpass的使用
如何用SSH连接远程服务器有两种方式 1.利用远程软件控制:sshclient.Puttty.secureCRT等 2.终端命令 ssh -p 22 root@服务器ip 密码需要手工交互式输入(2 ...
- (22)python 自动化
例子 from selenium import webdriver driver = webdriver.PhantomJS() driver.get("http://www.huhumh. ...
- 学懂grid布局:这篇就够了(译)
上周发过一篇关于flex布局的文章,但发完之后我感觉我并没有写很多自己对flex布局的理解,因为原链接的作者的轮子实在是太强了,这里借用知乎大佬牛岱的话来说,当人家已经有足够好的轮子,你就不要试图,甚 ...
- linux中MySQL本地可以连接,远程连接不上问题
1.网络或防火墙问题 (1)检查网络直接ping你的远程服务器,ping 182.61.22.107,可以ping通说明网络没问题 (2)看端口号3306是不是被防火墙挡住了,telnet 182.6 ...
- 【单调队列】bzoj1047 [HAOI2007]理想的正方形
先把整个矩阵处理成b[n][m-K+1].c[n][m-K+1]大小的两个矩阵,分别存储每行每K个数中的最大.最小值,然后再通过b.c处理出d.e分别表示K*K大小的子矩阵中的最大.最小值即可.单调队 ...
- 将千克转换成磅 Exercise05_03
/** * @author 冰樱梦 *题目:将千克转换成磅 *时间:2018年下半年 */ public class Exercise05_03 { public static void main(S ...
- css中width和height默认值
width和height默认都是auto自动伸缩的,但不同的标签效果却不一样比如div默认是width:100%,通常不用写100%如果是table,如果div内的table没有设定100%,那就是最 ...
- 触摸事件onTouchListener
1.效果图: (1)MainAcivity.java package com.example.app3; import android.content.DialogInterface; import ...