• jsop跨域请求方式--及中文乱码解决方案


    问题1:jsonp返回的数据中文乱码,设置了response.setCharacterEncoding("utf-8");无效?

          1.实测解决方案:

                  在controller的@requestmapping()注解中添加属性product:

         @RequestMapping(value = "/value",produces={"text/html;charset=UTF-8;","application/json;"})

      

    对于经常用jQuery的开发者来说,能注意到jQuery封装的$.ajax中有一个dataType属性,如果将该属性设置成dataType:"jsonp",就能实现JSONP跨域了。需要了解的一点是,虽然jQuery将JSONP封装在$.ajax中,但是其本质与$.ajax不一样。

    通过jQuery的$.ajax实现跨域的代码参考如下

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>jQuery实现JSONP</title>
     6 </head>
     7 <body>
     8     <div id="mydiv">
     9         <button id="btn">点击</button>
    10     </div>
    11 </body>
    12 <script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
    13 <script type="text/javascript">
    14     $(function(){
    15         $("#btn").click(function(){
    16 
    17             $.ajax({
    18                 async : true,
    19                 url : "https://api.douban.com/v2/book/search",
    20                 type : "GET",
    21                 dataType : "jsonp", // 返回的数据类型,设置为JSONP方式
    22                 jsonp : 'callback', //指定一个查询参数名称来覆盖默认的 jsonp 回调参数名 callback
    23                 jsonpCallback: 'handleResponse', //设置回调函数名
    24                 data : {
    25                     q : "javascript", 
    26                     count : 1
    27                 }, 
    28                 success: function(response, status, xhr){
    29                     console.log('状态为:' + status + ',状态是:' + xhr.statusText);
    30                     console.log(response);
    31                 }
    32             });
    33         });
    34     });
    35 </script>
    36 </html>

     后台代码:

      ajax设置为json返回类型的时候,后台返回类型就是json,如果ajax设置dateType为jsonp,则后台要设置返回类型为String类型,且返回值设置格式如下:

                                                                                                          return callback+ "(" + jb.toString() + ")";

      

     1     @ResponseBody
     2     @RequestMapping(value = "/info",produces={"text/html;charset=UTF-8;","application/json;"})
     3     public String save(HttpServletRequest request, HttpServletResponse response)
     4             throws Exception {
     5         logBefore(logger, "开始");
     6         Logger log=Logger.getLogger(CreditInfoController.class);
     7         ModelAndView mv = this.getModelAndView();
     8         PageData pd = new PageData();
     9         pd = this.getPageData();
    10         //设置默认更新数据
    11         updateT=true;
    12         /* 设置格式为text/json */
    13         response.setContentType("text/json");
    14         /* 设置字符集为'UTF-8' */
    15         response.setCharacterEncoding("utf-8");
    16         //response.setHeader("Access-Control-Allow-Origin", "*");
    17         String callback = request.getParameter("callback");
    18         JSONObject jb = new JSONObject();
    19         String token=request.getParameter("token");
    20         if(request.getParameter("company")==null || request.getParameter("contractObject")==null || token==null){
    21             jb.put("riskItem", "缺少参数");
    22             return callback+ "(" + jb.toString() + ")";

    问题1:

            jsonp请求 毫无反应的异常问题?

    原因分析:1.服务器未启动。由于$.ajax集成的jsonp请求,服务器如果关闭了,是不会有任何错误提示的,可以增加一个timeout时间,超过请求时间自动进入error。

                      2.域名解析异常。内网的部分电脑域名解析异常,造成无法解析成功,不能发送请求,更改正确的DNS域名后,刷新电脑DNS缓存,刷新浏览器DNS缓存。

       参考链接:http://blog.csdn.net/u014607184/article/details/52027879

            http://www.jb51.net/article/115230.htm

            http://blog.csdn.net/mggwct/article/details/47355323

  • 相关阅读:
    layui日历控件设置选择日期不能超过当前日期
    layui表格工具条,如何动态控制按钮的展示?
    celery定时任务
    redis的安装(windows+linux)
    redis常用操作
    mac通过virtualbox安装win10
    制作U盘启动盘
    k8s报错: * spec.template.spec.volumes[0].name: Invalid value: "nfs_pvc001": must match the regex [a-z0-9]([-a-z0-9]*[a-z0-9])? (e.g. 'my-name' or '123-abc')
    k8s的容器的端口暴露
    k8s中pod文件的定义格式
  • 原文地址:https://www.cnblogs.com/Nico-luo/p/8065880.html
Copyright © 2020-2023  润新知