js跨域请求实现
2015-12-14 13:56
627 查看
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的设置有关,项目中已经弃用。相关文章推荐
- 10022---JavaScript--DOM HTML与CSS
- Javascript 面向对象编程(一):封装
- js 静态私有变量
- Javascript中Event属性大全
- JS 移除一个属性
- jsp-status 404错误的解决方法汇总
- xml和json选择奖
- 总结JSP与servlet之间的传值
- AJAX的使用详解(javascript实现)
- JS操作DOM元素属性和方法
- js一些编写的函数
- JS实现DIV容器赋值的方法
- js获取和设置属性的方法
- 跟我extjs5(03--在项目过程中加载文件)
- JavaScript——如何构建自己的JS库?
- jsp过滤器乱码
- JavaScript简介、语法
- JSTL 核心标签库 使用
- 10021---JavaScript--HTML DOM (文档对象模型)简介
- js学习大法:用好firebug,走遍天下都不怕