六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 30|回复: 0

jsonp跨域提交数据

[复制链接]

升级  13.33%

70

主题

70

主题

70

主题

举人

Rank: 3Rank: 3

积分
240
 楼主| 发表于 2013-1-29 09:16:21 | 显示全部楼层 |阅读模式
51前写的一篇跨域提交数据的blog——JQuery AJAX跨域提交参数、接收json数据,在IE中使用时,页面会弹出提示“该页正在访问其控制范围之外的信息。这可能导致安全风险。是否继续?”,虽然在chrome和firefox里面则没这个提示,但IE用户还是较多,总感觉有点用户体验上有所欠缺,今天参考IBM社区的一篇文章——使用 JSONP 实现跨域通信,改了一下代码,使用jsonp的方式来实现,修改如下:
Servlet代码:
 
public class ProvideCourseInfo extends HttpServlet{private static final long serialVersionUID = -487357559770822253L;private ICourseService courseService;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)   throws ServletException, IOException {String jsonData = getDataAsJson(req.getParameter("symbol"));String output = req.getParameter("callback") + "(" + jsonData + ");";        resp.setCharacterEncoding("UTF-8");resp.setContentType("text/javascript");          PrintWriter out = resp.getWriter();out.println(output);}private String getDataAsJson(String courseNumber) {if(StringUtil.isBlank(courseNumber)){Course course = courseService.getValidCourse(courseNumber);if(course!=null){StringBuilder sb = new StringBuilder();String courseName = course.getCourseName();sb.append("{");sb.append("\"");sb.append("courseName");sb.append("\"");sb.append(":");sb.append("\"");sb.append(courseName);sb.append("\"");Integer lang = course.getLang();sb.append(",");sb.append("\"");sb.append("lang");sb.append("\"");sb.append(":");sb.append("\"");sb.append(lang);sb.append("\"");sb.append("}");course = null;return sb.toString();}}return "0";}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doGet(request, response);}@Overridepublic void init() throws ServletException {super.init();ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());courseService = (ICourseService) context.getBean("courseService");}} jsp代码:
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表