• js跨域请求实现


    js代码

    var url = zfba2url + "/fzyw/xzfy/smcl/autoUpdateByWS.action";
    var data = {
      "writid": writid,
      "reportName": reportname
    };
     
    $.ajax({
      contentType: "application/x-www-form-urlencoded;charset=UTF-8",
      type : "post",
      url : url,
      data : data,
      cache : false, //默认值true
      dataType : "jsonp",
      jsonp: "callback", // 必须,返回的响应需要以此为前缀
      success : function(json){
         if (json.result != "success") {
           alert("自动更新扫描材料失败!");
         }
      }
    });

    说明:

    1. contentType和type的设置,解决中文编码问题;
    2. jsonp用于指定一种约定,指定一个参数名,后台根据参数名获取的参数值,用作响应的前缀(参数值是jQuery自动生成的随机函数名);如某次的值为jsonp1449309226640

    后台Java代码

    /**
     * 根据文书自动生成扫描材料.<br>
     * 用于一期跨域调用,扫描材料存放在文书对应的案件.
     * SINOBEST 待总结 跨域请求
     * @param model
     * @param callback 跨域请求者指定的jsonp
     * @param writid 文书编号
     * @param reportName 报表名称
     * @return
     */
    @RequestMapping("/autoUpdateByWS")
    public @ResponseBody
    String autoUpdateByWS(Model model, String callback, String writid,
         String reportName) {
      smclService.updateSMCL(writid, reportName);
      String response = "${callback}({"result":"success"})"
           .replaceFirst("\$\{callback\}", callback);
      return response;
    }

    说明:

    响应返回的格式是callback(jsonContent),其中callback是使用的约定指定的参数的值,当前是jQuery自动生成的。jsonContent是json格式字符串,如{"result":"success"}
    如某次的返回:jsonp1449309226640({"result":"success"})

    后记

    上述代码是在IE6客户端测试的,在高级的IE版本不工作,可能和IE的设置有关,项目中已经弃用。

  • 相关阅读:
    预排序遍历树算法牺牲写性能的改进
    改造PAXOS算法消灭活锁
    扣减库存策略采用订单是否锁定库存方案
    [转]java-小技巧-001-Long序列化到前端不支持
    springboot-mybatis 批量insert
    VS2010 调试启动特别慢
    C# Winform App 获取当前路径
    DevExpress PivotGridControl控件
    (JavaScript)《JS面向对象编程指南》-- JavaScript基本数据类型、数组、循环
    (HTML5)HTML5 Web Notification桌面通知实践
  • 原文地址:https://www.cnblogs.com/ywjy/p/5045062.html
Copyright © 2020-2023  润新知