Extjs 常用3种proxy详解

来源:互联网 发布:淘宝兼职是真的吗 编辑:程序博客网 时间:2024/06/08 01:31
/**
 * Extjs 常用proxy详解
 * proxy作用是通过内存、http等不同媒介获取原始数据,然后将获取到得数据交给对应的读取器处理。
 *
 * 1.MemoryProxy:只能从javascipt对象获取数据,可以直接把数组、json、xml格式的数据交给他处理。
 *
 * 2.HttpProxy使用http协议,通过ajax去后台取数据,构造需要设置url参数,知道去那取数据。
 * eg:var proxy=new Ext.data.HttpProxy({url:'**.jsp'});
 * 注意:后台需要返回json格式的数据。并且httpProxy不支持跨域,只能从同一个域获得数据
 *
 * 3.ScriptTagProxy用法几乎和HttpProxy一样,但支持跨域
 *
 * eg:
 * var proxy = new Ext.data.ScriptTagProxy({url:’xxx.jsp’});
 * 
 *  jsp后台处理
 *  String cb = request.getParameter(“callback”);
 * response.setContenttype(“text/javascript”);
 * Writer out = response.getWriter();
 * out.write(cb + “(”);
 * out.write(“[” + “[‘id1’,’name1’,’descn1’]”+
 *  “[‘id2’,’name2’,’descn2’]”+
 *  out.write(“);”);
 *
 * 关键就在于从请求中获得的callback参数,这个参数叫做会点函数。
 * ScriptTagProxy会在当前HTML页面里添加一个<script type=”text/javascript” src=”xxx.jsp”></script>标签,
 * 然后把后台返回的内容添加到这个标签中,这样就可以解决跨域访问数据的问题。
 * 为了让后台返回的内容可以在动态生成的标签中运行,EXT会生成一个名为callback的回调函数,
 * 并把回调函数的名称传递给后台,由后台生成callback(data)形式的响应内容,然后返回给前台自动运行。
 *
 *
 *
 * 自动判断请求的类型,返回支持ScriptTagProxy或HttpProxy的数据。
 *
 *  boolean scriptTag = false;
 * String cb = request.getParameter(“callback”);
 * If(cb != null){
 *  scriptTag = true;
 *  response.setContentType(“text/javascript”);
 * }else{
 *   Response.setContentType(“application/x-json”);
 * }
 * Writer out = response.getWriter();
 * if(scriptTag){
 *  out.write(cb + “(”);
 * }
 * out.print(dataBlock.toJsonString());
 * if(scriptTag){
 * out.write(“);”);
 * }
 * 代码中通过判断请求中是否包含callback参数来决定返回何种数据类型。如果包含,就返回
 * ScriptTagProxy需要的数据;否则,就当作HttpProxy处理。
 */
原创粉丝点击