读书人

跨域请求之JSONP 5

发布时间: 2012-11-06 14:07:00 作者: rapoo

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

读书人网 >JavaScript

热点推荐