Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 456|回复: 0

jquery ajax跨域的完美解决方法(jsonp方式)

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-27 01:52:27 | 显示全部楼层 |阅读模式
    ajax跨域请求的问题,JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式,接下来为大家详细介绍下客户端JQuery.ajax的调用代码
     
     
    今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发
    JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式。分别是JQuery的 jquery.ajax jsonp格式和jquery.getScript方式。

    什么是jsonp格式呢?API原文:如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。意思就是远程服务端需要对返回的数据做下处理,根据客户端提交的callback的参数,返回一个callback(json)的数据,而客户端将会用script的方式处理返回数据,来对json数据做处理。JQuery.getJSON也同样支持jsonp的数据方式调用。  

    1
    $.ajax({
     2                     url:basepath+"/login/login?msg_base64="+msg_base64,
     3                     async: false,
     4 //                    data:{
     5 //                        "formContent":str,
     6 //                        "formName":formName,
     7 //                        "leixing":leixing
     8 //                    },
     9                     dataType:"jsonp",
    10                     processData: false,     
    11                     type:"get",
    12                     success:function(data){
    13                         data=data[0];
    14                         alert(data);
    15                         if(data.status=="0"){
    16                             $("#usererror").html(data.msg);
    17                         }else if(data.status=="1"){
    18                             $("#pwderror").html(data.msg);
    19                             }
    20                         else if(data.status=="2"){
    21                             alert("水电费:"+data.data);
    22                             addCookie("token",data.data,1);//将令牌存入cookie中
    23                             window.location.href="edit.html";
    24                             }
    25                     }
    26                 });
     1 @ResponseBody // 将方法的返回结果自动转换为json格式字符串,注意需要导json的包
     2     @RequestMapping(value = "/login", method = RequestMethod.GET)
     3     public String login(HttpServletRequest request,String msg_base64) {
     4         
     5         
     6         String callback=request.getParameter("callback");
     7         //System.out.println(callback);
     8                                                                 // 信息
     9 //        String msg_context_base64 = msg_base64.split(" ")[1];
    10         String msg = NoteUtil.base64Decode(msg_base64);// 解密,解密后:username:password
    11         String name = msg.split(":")[0];
    12         String pwd = msg.split(":")[1];
    13         NoteResult result = service.checkUser(name, pwd);
    14         System.out.println("result  "+result.toString());
    15         JSONArray json=JSONArray.fromObject(result);
    16         System.out.println("  "+callback+"("+json+")");
    17         return callback+"("+json.toString()+")";
    18     }
    19     

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-1-24 04:55 , Processed in 0.060299 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表