jsonp跨域提交数据
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代码:
页:
[1]