开发者社区> 未来星狒狒> 正文

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

简介: ajax跨域请求的问题,JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式,接下来为大家详细介绍下客户端JQuery.ajax的调用代码     今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发 JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式。
+关注继续查看
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     

 

未来星开发团队--狒狒 QQ:9715234

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JavaScript 对象入门使用JSON
JavaScript对象表示法(JSON)是用于将结构化数据表示为JavaScript对象的标准格式,通常用于在网站上表示和传输数据
4 0
[翻译] 国外大神的js 分号使用指南
• Required: When two statements are on the same line 必备: 当两个语句在同一行时 var i = 0; i++ // <-- semicolon obligatory // (but optional before newline) var i = 0 // <-- semicolon optional i++ // <-- semicolon optional • Optional: After statement
3 0
JS 函数
函数定义 在JavaScript中另一个基本概念是函数, 它允许你在一个代码块中存储一段用于处理单任务的代码,然后在任何你需要的时候用一个简短的命令来调用,而不是把相同的代码写很多次。
4 0
ESC阿里云服务器学习使用心得
在大一学习微信小程序时,以ESC阿里云服务器为后台进行学习时的心得分享。
8 0
SpringBoot之Yaml学习
SpringBoot的配置文件除了支持application.properties文件格式还支持application.yaml格式的配置文件。
4 0
spring security技术分享(二)
用户认证就是判断一个用户的身份是否合法的过程,用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问,不合法则拒绝访问。 认证是确认某主体在某系统中是否合法、可用的过程。这里的主体既可以是登录系统的用户,也可以是接入的设备或者其他系统。
5 0
牛逼!TCP 粘拆包问题及 Netty 中的解决方案
本文选自 Doocs 开源社区旗下“源码猎人”项目,作者 AmyliaY。
5 0
深挖 Redis 6.0 源码—— SDS
SDS(Simple Dynamic Strings, 简单动态字符串)是 Redis 的一种基本数据结构,主要是用于存储字符串和整数。 这篇文章里,我们就来探讨一下 Redis SDS 这种数据结构的底层实现原理。
4 0
给力!Java 并发之 Semaphore 源码剖析!
Semaphore 信号量,可用于控制一定时间内,并发执行的线程数,基于 AQS 实现。可应用于网关限流、资源限制 (如 最大可发起连接数)。由于 release() 释放许可时,未对释放许可数做限制,所以可以通过该方法增加总的许可数量。
5 0
这个开源库,快速生成全局唯一头像!
我给大家找了一个非常好用的开源库—— Generate Avatar。作者 Lorenz Weiß,是一名来自国外的 Web 开发者。
6 0
+关注
未来星狒狒
费元星
85
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载