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

  • 相关阅读:
    数据可视化图表详解(一)
    大数据思维
    常用的107条Javascript
    common.js js中常用方法
    MVC框架
    实现手机发送验证码 进行验证
    css3媒体查询实现网站响应式布局
    用谷歌浏览器来模拟手机浏览器
    响应式web网站设计制作方法
    css命名
  • 原文地址:https://www.cnblogs.com/glgl2424/p/2983171.html
Copyright © 2011-2022 走看看