`
zhouyrt
  • 浏览: 1126169 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

跨域请求之JSONP 五

 
阅读更多

前面四篇与后台约定的是返回如下的结构

 

 

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,不会每次请求都随机生成一个全局函数。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics