Ajax跨域查询完美解决方案

前端之家收集整理的这篇文章主要介绍了Ajax跨域查询完美解决方案前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
原因:浏览器安全上做了限制,禁止ajax跨域获得数据。

解决方法:通过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);
    });
})
如果有不明白的地方,请留言.... 原文链接:https://www.f2er.com/ajax/166173.html

猜你在找的Ajax相关文章