zoukankan      html  css  js  c++  java
  • 利用jQuery获取jsonp

    前端js代码:

    $.ajax({
       url: 'http://localhost:8080/webApp/somejsonp',
       dataType: "jsonp",
       jsonp: "callback",
       success: function (data) {
           console.log(data)
       }
    })

    服务端代码:

    本例采用java实现  使用的springmvc伪代码

     private boolean ifJsonp(HttpServletRequest request,HttpServletResponse response,Map<String, Object> map) throws Exception{
      // jsonp
      String callback = request.getParameter("callback");
      if(StringUtils.isNotBlank(callback)){
       callback = callback.trim();
       request.setAttribute("data", map);
       request.setAttribute("callback", callback);
       request.getRequestDispatcher("/jsonpData").forward(request, response);
       return true;
      }
      return false;
     }
    @RequestMapping("/jsonpData")
     public @ResponseBody String genJasonData(HttpServletRequest request,HttpServletResponse response){
      Object data = request.getAttribute("data");
      String callback = (String) request.getAttribute("callback");
      if(data==null||StringUtils.isBlank(callback)){
       return "{"result":"-1","message":"未知错误"}";
      }
      try {
       response.setContentType("application/x-javascript;charset=UTF-8");
       response.setCharacterEncoding("UTF-8");
       response.getOutputStream().write((callback+"(").getBytes());
       JsonGenerator generator = this.objectMapper.getJsonFactory().createJsonGenerator(response.getOutputStream(), JsonEncoding.UTF8);
       this.objectMapper.writeValue(generator, data);
       response.getOutputStream().write((")").getBytes());
      } catch (Exception e) {
       return "{"result":"-1","message":"未知错误"}";
      }
      return null;
     }

    服务端使用:

        @RequestMapping(value = "/somejsonp")
        public Map<String, Object> findRcbChannelTabsInRecordID(HttpServletRequest request,HttpServletResponse response) throws Exception{
            List list = new ArrayList();
            Map<String, Object> map = new HashMap<String, Object>();try {
                list = service.queryData(map);//要查询的数据  
            } catch (Throwable t) {
               
            }
            
            map.put("Data", list);// jsonp
            if(ifJsonp(request, response, map)){
                return null;
            }
            
            return map;
        }

    来源更多请参考:http://www.cnblogs.com/lemontea/archive/2012/12/11/2812268.html

  • 相关阅读:
    mysql中的enum型
    mysql中的时间year/date/time/datetime
    一些数字的属性
    mysql增删
    Perl6 Bailador框架(8):自定义400/500
    react: typescript jest && enzyme
    webstorm tslint配置
    react: typescript import images alias
    JSONP原理及简单实现
    纯css画三角形
  • 原文地址:https://www.cnblogs.com/cxyj/p/3884934.html
Copyright © 2011-2022 走看看