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

  • 相关阅读:
    项目笔记一:新建Razor实现多表联合查询
    2018.11.02 理解context 和_context.
    python 笔记1
    Beautiful Soup 笔记 1基本使用
    zabbix 微信报警
    java异常处理机制 (转载)
    jsoup 对网页中图片解析
    java 异常
    将glove预训练词向量转为word2vector形式
    vscode for mac怎样关闭自动更新
  • 原文地址:https://www.cnblogs.com/glgl2424/p/2983171.html
Copyright © 2011-2022 走看看