博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jquery ajax跨域的完美解决方法(jsonp方式)
阅读量:4647 次
发布时间:2019-06-09

本文共 2683 字,大约阅读时间需要 8 分钟。

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:password11         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

 

转载于:https://www.cnblogs.com/feiyuanxing/p/4575888.html

你可能感兴趣的文章
Python for Infomatics 第13章 网页服务四(译)
查看>>
Sphinx 全文检索
查看>>
Shell编程(一)
查看>>
[转]Ubuntu10下MySQL搭建Amoeba系列(文章索引)
查看>>
Android模糊效果总结
查看>>
Android开发系列(二十七):使用ProgressDialog创建进度对话框
查看>>
文件系统和数据库的对照
查看>>
使用ASP.NET Atlas编写显示真实进度的ProgressBar(进度条)控件
查看>>
vs.net各版本解决方案相互转换工具
查看>>
PHP配置成功后phpinfo中找不到mysql
查看>>
加速计
查看>>
selinux基本
查看>>
python学习笔记——拾壹
查看>>
Python 包
查看>>
PHP常用的缓存技术汇总
查看>>
setTimeout详解
查看>>
node执行环境
查看>>
C++中使用Curl和JsonCpp调用有道翻译API实现在线翻译
查看>>
谈谈 ArrayList 和 LinkedList 的区别
查看>>
Codeforces Beta Round #85 (Div. 1 Only) C (状态压缩或是数学?)
查看>>