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的普通传值与引用传值以及unset
首先,要理解变量名存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 普通传值,传值以后,是不同的地址名称,指向不同的内存实体; 引用传值,传引用后,是不同的地址名称,但都指向同一 ...
- 来,让我们谈一谈 Normalize.css
Normalize.css 只是一个很小的CSS文件,但它在默认的HTML元素样式上提供了跨浏览器的高度一致性.相比于传统的CSS reset,Normalize.css是一种现代的.为HTML5准备 ...
- HDU 1556.Color the ball-差分数组-备忘
备忘. 差分数组: 区间更新查询有很多方法,线段树.树状数组等都可以.如果为离线查询,就可以考虑使用差分数组. 假设对于区间[l,r]的每个数都加1,我们用一个数组a来记录,a[l]+=1;a[r+1 ...
- 康托展开&逆展开算法笔记
康托展开(有关全排列) 康托展开:已知一个排列,求这个排列在全排列中是第几个 康托展开逆运算:已知在全排列中排第几,求这个排列 定义: X=an(n-1)!+an-1(n-2)!+...+ai(i-1 ...
- JNI基础学习
1.JNI(Java Native Interface): 它允许Java代码和其他语言写的代码进行交互,JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要 ...
- 让你的apache支持ipv6
如果你使用的linux系统已经获取到了ipv6地址,你就可以让你的apache htpd 等也支持ipv6. 1.检查linux监听的端口,如果有:::port ,而且获取到了ipv6地址,则可以确定 ...
- 大数据技术之_16_Scala学习_06_面向对象编程-高级+隐式转换和隐式值
第八章 面向对象编程-高级8.1 静态属性和静态方法8.1.1 静态属性-提出问题8.1.2 基本介绍8.1.3 伴生对象的快速入门8.1.4 伴生对象的小结8.1.5 最佳实践-使用伴生对象解决小孩 ...
- 第2天-css快速入门
css是什么 css(cascading style sheet,可以译为“层叠样式表”),是一组格式设置规则,用于控制web页面的外观 如何让一个标签具有样式 第一步:必须保证引入方式正确 第二步: ...
- windows下虚拟环境安装方法
方法一:使用virtualenv安装虚拟环境 1.安装virtualenv pip install virtualenv 2.随意创建文件夹(将来虚拟环境会在这个文件夹) mkdir mypro ...
- pythonGUI编程打开默认浏览器
代码: from tkinter import * import webbrowser root = Tk() text = Text(root,width=30,height = 5) text.p ...