Ajax跨域查询完美解决通过$.getJSON()实现
原因:浏览器安全上做了限制,禁止ajax跨域获得数据。
解决方法:通过jquery提供的$.getJSON()可以跨域获得JSON格式的数据。优点:兼容性强。
Java后台代码:
Js前台调用代码:
如果有不明白的地方,请留言....
解决方法:通过jquery提供的$.getJSON()可以跨域获得JSON格式的数据。优点:兼容性强。
Java后台代码:
代码如下:
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String callback =req.getParameter("callback");//jquery生成的自定义函数名 resp.setCharacterEncoding("UTF-8"); resp.setContentType("text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); //返回json格式字符串,注意向前台输出的格式必须为 callback(json格式的字符串); //callback是jquery生成的自定义函数名,返回这种格式,前台jquery代码会自动替换 //回调函数为此callback函数,从而达到跨域的效果,网上还有其他的跨域方案如:AJAJ //原理应该也是和此方法一样。缺点是:返回数据量不宜过大,安全性差,建议重要数据不 //要通过这种形式传递。 out.print(callback+"({name:'111',sex:'222'});"); out.flush(); out.close(); }
Js前台调用代码:
代码如下:
$(function(){ //需要传的参数,可以不传。 var data= {param1:"param1",param2:"param2"}; //注意url一定要以callback=?的形式拼接,callback参数名可以自定义, //但后台必须也要同步获取的参数名 var url = 'http://192.168.1.216:8080/DSFA/getUser?callback=?'; $.getJSON(url,data,function(backdata){ //其实后台返回的函数已经替换为此函数,所以backdata //就是你从后台传过来的json对象。 alert(backdata); }); })
如果有不明白的地方,请留言....
相关推荐
kentrl 2020-11-10
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
ajaxyan 2020-11-09
zndy0 2020-11-03
学留痕 2020-09-20
Richardxx 2020-11-09
learningever 2020-09-19
chongxiaocheng 2020-08-16
ajaxhe 2020-08-16
lyqdanang 2020-08-16
curiousL 2020-08-03
TONIYH 2020-07-22
时光如瑾雨微凉 2020-07-19
83510998 2020-07-18
坚持着执着 2020-07-16
jiaguoquan00 2020-07-07
李永毅 2020-07-05
坚持着执着 2020-07-05