跨域请求京东接口
来源:互联网 发布:php远程授权 编辑:程序博客网 时间:2024/05/12 02:09
我们服务器上项目链接:
http://sk2shop.moxz.cn/
http://sk2shop.moxz.cn/index1.html
京东服务器链接:
http://wqs.jd.com/promote/third/sk2shop2
http://wqs.jd.com/promote/third/sk2shop2/index1.html
京东提供的接口如下:
http://wq.jd.com/activeapi/opensendcouponapi?biz=bizname&cert=xxxxxx&returl=xxxxxx
前端需要在请求的接口返回的链接中,获取ret状态值(根据不同的状态值,提示不同的信息),及定义returl返回页面;
遇到问题
1.跨域请求,jsonp问题;
$.ajax({
url:'src',
type:'get',
async : false,
dataType:'jsonp',
jsonpCallback:'jdcard',
success:jdcard
});
function jdcard(data){
var url;
if(data.code == 200){
url = data.url;
$.cookie("clicc","y");
location.href =url;
}
}
标红的三项需特别注意:
a.asnyc:true(默认) 异步方式,当ajax发送请求后,两个线程同时执行。
async:false; 同步执行。
b.当dataType:'jsonp',的情况下cache默认为false,jquery1.2以上新功能。
cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。
c.jsonpCallback:'jsonCallback'(默认情况下这么写),jsonpCallback是实现跨域请求时定义回调函数用的。如果不涉及到跨域请求可以不写。
jsonpCallback的值可以根据后台传的或者自定义的去写,比如上边写的 jsonpCallback:'jdcard'
d.success方法是所有的请求都请求完毕后执行的。
2.请求完成后再次刷新页面时,还是弹窗怎么办?
//此时页面返回链接为:http://sk2shop.moxz.cn/?ret=0&retmsg=oijewiofj
截取url,并获取某个参数的方法(我们这技术大牛写的,腻害):
var str = location.search, ret;
str=str.replace(/^\?/,'').split('&');
for (var i = str.length - 1; i >= 0; i--) {
if(str[i].match(/^ret/g)){
ret = str[0].split('=');
ret = ret[1];
break;
}
}
location.search是截取link链接后的拼接参数,如本链接为:http://sk2shop.moxz.cn/?ret=0&retmsg=oijewiofj
那么location.search后获取的值为:?ret=0&retmsg=oijewiofj
然后利用正则进行匹配。最后得到ret值。
if(location.href.indexOf("?") != -1){
$(".loading").hide();
if(ret == 0){
$(".coupon").html("领取成功(领取成功,请到京东账户内查看)");
}
}
因为当前ret值已经存在,所以刷新页面时会再执行一次弹窗方法,即使封装在function里也同样会执行。
然。。研究半天,最后想出来了第一次请求时给个cookie值,每打开页面时判断cookie值是否存在。
想法有了,但实现也并非那么容易。
接下来是苦b的探索过程。
最后找到个好方法,判断页面是否第一次打开,然后将cookie存储起来:
var urlf=window.location.href;//获取当前的URL
urlf=urlf.replace(/[^a-z0-9]/gi,"");//用正则清除字符串中的所有非字母和数字的内容
if($.cookie(urlf)=="" || $.cookie(urlf)==null){
alert("第一次找开");
$.cookie(urlf,"y");
}else{
alert("已经打开过");
$.cookie(urlf,"n");
}
这个活无比煎熬,因客户总改需要,再加之跨域请求,上到京东服务器时,由于 两个服务器之间调用,也存在一些问题。
端午节三天假,我两天都在加班。
- 跨域请求京东接口
- 跨域请求接口
- AJAX跨域请求PHP接口
- ajax跨域请求调用webservice接口
- springmvc接口支持跨域请求
- jsonp跨域请求API接口[自己写接口]
- JS通过JSONP跨域请求API接口
- ajax跨域请求接口介绍及解决方案
- ajax跨域请求接口介绍及解决方案
- java请求第三方接口遇到的跨域问题
- Java后台如何实现跨域请求接口
- vue proxyTable 接口跨域请求调试(代理)
- restful接口实现跨域访问,以及get请求对象参数对象封装,post请求
- ajax请求node.js接口时出现跨域问题Access-Control-Allow-Origin
- Ajax跨域请求另一个tomcat服务下接口的问题
- 前端请求时接口跨域无法自动获取cookie的解决方法
- 跨域调用接口——WebClient通过get和post请求api
- Ajax:跨域请求接口数据时无法设置同步的一种解决方案
- Spring MVC中JSON无限死循环问题
- CentOS 7中利用Snapper快照进行系统备份与恢复
- 教你上传本地代码到github
- JVM每小时执行一次FULL GC问题
- Linux shell获取执行脚本文件所在的目录
- 跨域请求京东接口
- Resource Components of Spring
- 使用FMDB多线程访问数据库 及databaseislocked的问题
- maven 常用指南
- SQLiteDatabase中query、insert、update、delete方法参数说明
- JPA 一对多延迟加载与关系维护
- 使用OpenSSL将pfx证书转换成cer格式的证书
- 只是想写点东西,而已
- iOS Auto Layout 2