利用jquery 的jsonp 进行跨域访问
来源:互联网 发布:微信js接口文档 编辑:程序博客网 时间:2024/06/10 00:56
var ajaxTimeout = $.ajax({
url:'http://*******', //请求的URL
timeout : 4000, //超时时间设置,单位毫秒
contentType : 'text/html',
//async: false, //jsonp 不能同步
type : 'get', //请求方式,get或post
data : 'aaaaa', //请求所传参数,
cache: false,
dataType : "jsonp",jsonp: "callbackparam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonpCallback:"jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
success:function(data){ //请求成功的回调函数
dosomething
},
error:function (data, status, e){
dosomething
},
complete : function(XMLHttpRequest,status){ //请求完成后最终执行参数
if(status=='timeout'){//超时,status还有success,error等值的情况
ajaxTimeout .abort();
alert("超时");
}
}
});
服务器返回的数据必须是: jsonpCallback([ {"isSuccess":"0" ]); 这样的格式,
这么理解这个呢, 其实就是如有一个 function jsonpCallback(data){.........}, 那么 jsonpCallback([ {"isSuccess":"0" ]); 就是调用这个function!
说到原理, 就是利用script标签能跨域执行脚本的功能, 并且执行后返回的脚本是一个能执行的js 脚本, 你可以利用返回结果, 拼装自己需要的脚本!
这里说一下一些问题:
1. 最大的问题, 整个请问只能是异步的, 无法完成同步, 导致会出现一些 parsererror, 如果服务返回时间长, 这个问题就很频繁的, 这个目前无法解决!
经过长时间的测试, 我发现即使出现pasererror 错误触发了error 方法, 但是最终服务返回后, 还是会执行success 方法的, 所以在服务结果满足需求的情况下, 可以把parsererror 错误忽略!
所以error 方法可以处理成
if(status!='parsererror'){ //parsererror 这种错误是因为异步造成的,但是最终还是能success 的,所以忽略次错误!
dosomething
}
2. 也可以自定义jsonpCallback 方法, 把结果返回到一个元素中, 然后用另外的方法定时去访问这个元素, 如果该元素存在数据, 证明访问完成!
但是这样做的问题是, 如果存在服务失败和超时的话, 这些都无法被获取和处理!
3. 还有一种方法是用
setTimeout(function(){
dosomething; //所有后续操作都放到setTimeout 里面, 因为js 是单线程的, 没有sleep 和延迟功能, 最麻烦是没有exit 功能
根据实际情况提交或退回; // 针对我的实际情况是表单提交
}, 2000);
return false; // 针对我的实际情况是表单提交,
- 利用jquery 的jsonp 进行跨域访问
- AJAX利用Jsonp进行跨域对MVC项目访问
- jquery下利用jsonp跨域访问实现方法
- 利用jsonp跨域访问
- 利用jsonp实现http 的跨域访问
- 基于JQuery、Jsonp与Jersey的跨域访问
- 使用jquery .ajax()的jsonp跨域访问
- 基于JQuery、Jsonp与Jersey的跨域访问
- jquery使用jsonp解决json跨域访问的问题
- 利用jsonp进行ajax跨域请求
- Jquery使用jsonp跨域访问
- Jquery+jsonp+ajax跨域访问
- jsonp jquery jersey 实现跨域访问
- JQuery+ajax+jsonp 跨域访问
- JQuery+ajax+jsonp 跨域访问
- JQuery+ajax+jsonp 跨域访问
- JQuery+ajax+jsonp 跨域访问
- JQuery+ajax+jsonp 跨域访问
- 快汇宝揭秘:400电话机票骗子
- Go语言语法
- JDK动态代理实现原理
- Linux Grep
- 页面从视图中消失
- 利用jquery 的jsonp 进行跨域访问
- postgresql的一些操作记录
- XMPP中常用对象们:
- ajax 向服务器传递数组
- plsql连接远程机器
- FastReport产品介绍及免费下载地址
- LVS和keepalived安装过的配置语句
- HBase总结(十四)LINUX下用Eclipse构建HBase开发环境
- 纠结很久的internal server error