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轻量级开源框架 入门篇: 查询数据详解 ...
随机推荐
- hdu 5174(计数)
Ferries Wheel Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- 【转】Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址
Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址 关注finddreams,一起分享,一起进步: http://blog.csdn.net/finddr ...
- [BZOJ2631]tree 动态树lct
2631: tree Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 5171 Solved: 1754[Submit][Status][Discus ...
- Allocate exception for servlet XXX 基本异常
HTTP Status 500 - Error instantiating servlet class cn.tedu.servlet 错误!! 解决方案: 查看当前项目下的web.xm文件的真 ...
- Error converting bytecode to dex: Cause: java.lang.RuntimeException: Exception parsing classes
http://blog.csdn.net/xx326664162/article/details/51859106 总算有个靠谱的了
- QTWebKit之QWebView学习
QWebView是一个simple web 浏览器 一般打开页面的方法为: app = QtGui.QApplication(sys.argv) web = QWebView() web.load(Q ...
- small test on 5.30 night T2
(题面写错了,应该是一条从b -> a 的边) 让我们设状态 (a,b,c) 表示存在一个点k,使得 dist(k,b) - dist(k,a) * 2 + 3 = c,显然这里的第三维可以压 ...
- 【并查集+离散化】BZOJ4195- [Noi2015]程序自动分析
[题目大意] 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的 ...
- STL之priority_queue2
描述 使用STL中的优先队列,将一个字符串中的各个字符按照ASCII从小到大顺序排列. 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码. int main() { int n; cin&g ...
- Problem B: 调用函数,求1!+2!+3!+......+10!
#include<stdio.h> double fact(int i); int main() { int i; ; ;i<=;i++) sum=sum+fact(i); prin ...