日期:2014-05-16 浏览次数:20360 次
前面四篇与后台约定的是返回如下的结构
?
?
jsonp = "{name:xx, age:xx}"
?
即标示符jsonp为一个全局变量。这篇后台接口则是一个JSON作为函数的参数传入,即后台返回的是一个全局函数。
?
后台我用Java写的Servlet,如下
?
String callback = request.getParameter("callback"); response.setContentType("text/plain"); PrintWriter out = response.getWriter(); out.println(callback + "({age: 877})"); out.flush(); out.close();
?
callback是前台传给后台的参数,即全局的一个函数名。?这种方式也是jQuery采用的方式。jQuery的JSONP请求每次都会生成一个随机函数名传给后台。
?
接口与上一篇相同,如下
?
// 开启调试模式 Sjax.debug = true; Sjax.get({ url // 请求url param // 请求参数 (键值对字符串或js对象) success // 请求成功回调函数 failure // 请求失败回调函数 scope // 回调函数执行上下文 timestamp // 是否加时间戳 });
?
这种方式的缺点是每次请求都会生成一个全局函数名,回调后虽然将函数置null/undefined,但window对象下仍然能看见该属性。前四篇则固定使用变量jsonp,不会每次请求都随机生成一个全局函数。