Ajax跨域查询完美解决方案

8 篇文章 0 订阅
7 篇文章 0 订阅
                  原因:浏览器安全上做了限制,禁止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);
    });
})
          如果有不明白的地方,请留言....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值