ajax请求由get/post变成options由跨域引起

1:在做微信公众平台上的开发时,发现,本来在pc端好好的ajax请求,到了手机页面上就无效了,用UC开发者手机浏览器连接pc测试,发现手机上的页面后台请求,ajax本来是get变成了options了,搞了好久,最后解决了。问题的原因http://www.clanfei.com/2012/08/1637.html这个链接上文章解释了引发跨域的原因。

2:我用jQuery的方式解决的,http://api.jquery.com/jQuery.getJSON/两种解决思路,

 

jQuery中如何通过JSONP来跨域获取数据

(1) 第一种方法是在ajax函数中设置dataType为'jsonp':

 

 

  1. $.ajax({
  2.         dataType: 'jsonp',
  3.         url: 'http://www.a.com/user?id=123',
  4.         success: function(data){
  5.                 //处理data数据
  6.         }
  7. });

(2) 第二种方法是利用getJSON来实现,只要在地址中加上callback=?参数即可:

 

 

  1. $.getJSON('http://www.a.com/user?id=123&callback=?', function(data){
  2.         //处理data数据
  3. });

我是通过第二种方式,

 

js中的代码:

var data= {id:2};//传参数
//注意url一定要以callback=?的形式拼接,callback参数名可以自定义,
                    var url = 'http://weixin.hehehe.com/filing/charge.json?callback=?';
                    $.getJSON(url,data,function(backdata){
                      alert(backdata)//后台返回json格式的数据
                    });

java后台的代码

@RequestMapping(value = "filing/charge", method = RequestMethod.GET)
    public void charge(Integer id, HttpServletRequest request, HttpServletResponse response) throws IOException {
        String callback = request.getParameter("callback");//jquery生成的自定义函数名
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/json;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.print(callback + "("+ JSON.toJSONString(list)+")");
        out.flush();
        out.close();
    }

这里面的list是一个后台数据库查询的list集合,把这个list集合转换成json格式传到前台js中.

到此就解决ajax跨域的问题了。

后续有很多开发填坑的文章发布,如果对你有帮助,请支持和加关注一下

http://e22a.com/h.05ApkG?cv=AAKHZXVo&sm=339944

https://shop119727980.taobao.com/?spm=0.0.0.0 

转载于:https://my.oschina.net/baishi/blog/146812

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值