JSONP用法

今天用了kendoui 用了网上的js文件,但是请求的是本地数据库,所以两者请求的主机不一样。前端浏览器控制台直接报错。

然后使用了JSONP请求了不同的数据源

首先说明的一点:使用jsonp有可能对你客户端有不安全的因素,存在被盗链的危险。当然,我这里是自己在自己本地项目上做一做玩一玩,其实也没事


先看我为什么要使用jsonp


firstly:

   
   

我引用了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 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





你可能感兴趣的:(kendoUI)