今天用了kendoui 用了网上的js文件,但是请求的是本地数据库,所以两者请求的主机不一样。前端浏览器控制台直接报错。
然后使用了JSONP请求了不同的数据源
首先说明的一点:使用jsonp有可能对你客户端有不安全的因素,存在被盗链的危险。当然,我这里是自己在自己本地项目上做一做玩一玩,其实也没事
先看我为什么要使用jsonp
firstly:
<script src="https://kendo.cdn.telerik.com/2017.2.621/js/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2017.2.621/js/kendo.all.min.js"></script>
我引用了kendoui 的前端框架
secondly:
我请求了本地的数据
dataSource: {
transport: {
read: {
url: "${base.contextPath}/hr/salary/queryf",
type:"GET",
dataType:"jsonp",
success:function(data){
/* var result=JSON.stringify(data);
console.log(result); */
}
}
},
sort: {
field: "year",
dir: "asc"
}
},
不熟悉kendoui框架的朋友可能不知道我这里是什么意思。反正其实相当于你使用了ajax 请求了本地数据一样,可以这样理解。
and then:
请看我的controller(我使用了springMVC):
@Controller
@RequestMapping(value="/hr/salary")
public class CompanyProfitController {
@Autowired
private CompanyProfitService cps;
@RequestMapping(value="/queryf")
@ResponseBody
public void query(HttpServletRequest request,HttpServletResponse response) throws IOException{
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
List<CompanyProfit> salary=cps.query();
//把数据封装成jsonarray
JSONArray jsona= JSONArray.fromObject(salary);
//数组转换成string
String result=jsona.toString();
String callback=request.getParameter("callback");
//弄成 callback(result) 的形式
result=callback+"("+result+")";
response.getWriter().write(result);
}
}
感觉写得比较粗略,我个人的理解是将数据 弄成字符串链,然后通过response相应给客户端,然后客户端解析这个字符串链()
我感觉这个人的博客可以写得很清楚
http://www.cnblogs.com/digdeep/p/4170059.html