JSON(JavaScript Object Notation)和JSONP(JSON with Padding)虽然只有一个字母的差别,但其实他们根本不是一回事儿:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。JSONP解决了ajax跨域请求的问题,JSONP只是解决跨域请求方案中的一种。
下面基于Servlet简单介绍一下JSONP接口的开发流程:
1, 创建一个Servlet接口JsonpServlet
class JsonpServlet extends HttpServlet { doGet(HttpServletRequest req, HttpServletResponse resp) ServletException, IOException { //回调函数名 String callback = req.getParameter(); resp.setCharacterEncoding(); JSONObject jo = JSONObject(); jo.put(,); System..println(jo.toJSONString()); System..println(jo.toString()); //将JSON包装进函数名中 resp.getWriter().print(callback + + jo.toJSONString() + ); } doPost(HttpServletRequest req, HttpServletResponse resp) ServletException, IOException { doGet(req, resp); } } |
2, 创建一个html文件,并调用JSONP接口
var localHandler = function(data){ alert(‘i am local fun,can be called by remote.js,remote js return data :‘ + data.result); }; var url = "http://localhost/jsonpServlet?callback=localHandler"; var script = document.createElement(‘script‘); script.setAttribute(‘src‘, url); document.getElementsByTagName(‘head‘)[0].appendChild(script); |
调用成功后,浏览器弹出对话框
时间: 2024-12-24 00:55:31