zoukankan      html  css  js  c++  java
  • 关于JSONP的理解

    JSONP的实质是通过跨域请求,返回给页面一个结果,这个请求没有js端类似success的回调函数,其功能类似于:

    <script type="text/javascript" src="XXX"></script>

    即引入一个字符串,并执行这个字符串,不过好像引入js这种文件的话,不会执行。当然可以通过eval来执行

    两种实现:

    Ext.create('Ext.data.Store', {
             proxy: {
              type: 'jsonp',
              extraParams:{"params" : Ext.encode(params)},
              url : selectURL
             },
             autoLoad: true
            });
            /*
            jQuery.ajax({
              url : updateURL,
              data : {"params" : Ext.encode(params)},
              type : "get",
              cache : false,
              dataType : "jsonp",
              async: false
            });
            */

    后台返回的字串:

    comboxPBStoreData_JSONP=[{"no":"1234567","name":"AAA"},{"no":"1234568","name":"BBB"}]

    这样,js中就相当于多了个全局变量comboxPBStoreData_JSONP,可以直接用来使用,当然返回字符串也可以是“MessageBox('AAA');”这种,这样等这个返回字串被处理时,就会弹出一个对话框,这种方法可以从另一个角度部分解决JSONP没有回调的弊端,至少页面可以有响应,知道处理结果

    正确的用法:

    前台

    jQuery.ajax({
              url : updateURL,
              data : {"params" : Ext.encode(params)},
              type : "get",
              cache : false,
              dataType : "jsonp",
              async: false,
              success : function(jsonstr){
               var result = Ext.decode(jsonstr);        
              }
    });

    后台:

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
        //获取参数
        String callback = request.getParameter("callback");

       JSONObject obj = new JSONObject(); 
        obj.put("addVersion", adds);
        response.getWriter().write(callback+"('"+obj.toJSONString()+"')");

     注意:1、默认使用callback,jquery自动添加的

    2、response返回时,必须拼装成fun('a')这种形式,'a'作为字符串,即success的jsonstr的值。

    3、如果不使用callback,无法在前台收到回调处理,进不了success

  • 相关阅读:
    JS 获取本月第一天零点时间戳并转化成yy-mm-dd
    JS 两个对象数组合并并去重
    element ui datePicker 设置当前日期之前的日期不可选
    整理一些vue elementui 问题 + 链接方法
    css 修改placeholder的颜色
    js循环内0.5s停止
    自定义border 为 dashed 时的虚线间距
    如何让浮动元素水平/垂直居中
    centos7.6设置sftp服务
    HikariCP Druid比较
  • 原文地址:https://www.cnblogs.com/glgl2424/p/2983171.html
Copyright © 2011-2022 走看看