• jsonp 请求和回传实现


      JSONP最主要的是可以解决跨域问题,不然谁会没事用这种格式。

      下面是我用JSONP的一些心得体会:

     JSONP是JSON with Padding的略称。它是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问。对,它就是一种协议,不是数据格式,开始我也被

    dataType: "jsonp"这个鬼东西误导了,我们根本不需要考虑格式问题,该返回什么格式就返回什么格式,只要注意几个地方就可以了:

    1. jsonp: "callback",jsonpCallback:"userHandler",这两个可以自定义也可以不定义,为了可读性建议还是自定义好。
    $.ajax({
               url: "http://172.25.19.63:8084/web/",
               type: "post",
               dataType: "jsonp",
               jsonp: "callback",
               jsonpCallback:"userHandler",
    //           contentType: 'application/json',
    //           data:JSON.stringify(json),
               data:{password: "password",
                   username: "username"},
               success: function(data){
                   alert(data.name)//得到”忍着不哭泣“
          },
          error: function(data){
             alert(data.status);//调用状态
          }
    });
    2.  在服务器端callback = resquest.getParamter("callback")取到的值是"userHandler",然后如下图拼装起来写入response里面就OK了
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          callback = resquest.getParamter("callback")//取到的值应该是userHandler
          PrintWriter out = response.getWriter();
          String json = {"name":"忍着不哭泣"}
          out.println(callback+"("+json+")");
          out.close();
    }

    3.上图是json格式字符串(可以其他格式)客户端就会取到json对象。

    Jsonp原理: 
    首先在客户端注册一个callback, 然后把callback的名字传给服务器。

    此时,服务器先生成 json 数据。
    然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp.

    最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。

    客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里.(动态执行回调函数)

  • 相关阅读:
    thinkphp nginx 上配置 并解决get获取到数据现象
    Linux下压缩某个文件夹(文件夹打包)
    Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持
    SecureCRT超级终端使用说明
    redis 中文文档
    【Spring学习笔记-MVC-15】Spring MVC之异常处理
    【Spring学习笔记-MVC-14】Spring MVC对静态资源的访问
    【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传
    【Spring学习笔记-MVC-13】Spring MVC之文件上传
    【Spring学习笔记-MVC-12】Spring MVC视图解析器之ResourceBundleViewResolver
  • 原文地址:https://www.cnblogs.com/johnnyC/p/9678371.html
Copyright © 2020-2023  润新知