第一次分享。。。 有啥不对的地方。。还望指出! 若有更好的解决方案,呵呵。。 也希望能得到分享!。
背景: 项目中要显示股票指数数据,由于咱们当前系统中没有这些数据,所以只能通过跨域去取数据。由于指数数据是实时数据,初定方案是通过ajax每隔3秒去指定的地址去拿数据。
var requestObject = {
url : "地址",
vars : "参数",
callBack : 回调函数,
method : "post",
};
var ajax = new TFL.ajax2(); //对XmlHttpRequest 做了封装
ajax.ajaxRequest(requestObject);
本地测试通过。。。 上测试环境(正式环境)发现不行!。。 才发现ajax无法跨域取数据。(呵呵,web新手。。见笑了)
第二中方案:
利用js创建dom的原理,去动态创建一个<script></script> 在指定 scr的值 。
function c(){
var date = new Date();
var hours = date.getHours();
if(hours>=9 && hours <=15){//开盘时间
a(); }
}
function a(){
var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
// 回调只对firefox有效
script.onreadystatechange= function () {
if (this.readyState == 'complete') {
b();
};
}
script.onload= 回调函数;
// 回调只对firefox有效
script.src= b;
head.appendChild(script);
}
function b(){//回调函数
}
setInterval("c()"3000);
上面遗留了一个问题,就是在ie下无法执行回调函数,只能直接去调用函数,但也许会出现这样一种情况,就是数据还在加载,js直接调用回调函数的代码就已经执行了,导致无法取到数据。
我的解决方案是 : 先判断浏览器,然后在通过定时器去定时执行回调函数。(说白了就是ie下推迟执行回调函数)
// 判断是否ie
var is_opera = /opera/i.test(navigator.userAgent);
var is_ie = (/msie/i.test(navigator.userAgent) && !is_opera)
if(is_ie){
setInterval("c()",4000);
}
以上是我的总结。 。 呵呵 。热烈欢迎踊跃提意见啊。!
分享到:
相关推荐
你需要获取其他网站的数据吧,ajax跨域获取数据帮你实现。
jQuery使用ajax跨域获取数据
如果想做到数据的交互,那么www.aa.com和book.aa.com必须由你来开发才可以。可以将book.aa.com用iframe添加到 www.aa.com的某个页面下,在www.aa.com和iframe里面都加上document.domain = "aa.com",这样就可以统一域...
利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
一个c# ajax跨域的demo,解决c# ajax 跨域的问题
本资源主要介绍了AJAX跨域的解决办法,以及解决方案间的比较
怎样实现Ajax 跨域访问的五种方法, 怎样实现Ajax 跨域访问的五种方法
解决ajax跨域问题
ajax跨域调用wcf实例
ajax跨域
Spring Boot 使用 Redis 进行配置 Session 共享(Ajax 跨域) 源码下载。
Ajax跨域问题及其解决方案.docx
Ajax跨域提交
在收集AJAX面试题的时候其实就已经有过AJAX跨域的问题的了,当时候知道了为什么会存在跨域,以及跨域解决的方案有哪些,今天随着课程的学习,又加深了AJAX跨域的理解,以此记录下来。
Ajax跨域问题详解,包括详解内容、java代码、nginx等详细信息,可以直接运行
解决ie8、9Ajax跨域问题(前端):jsp引入此js,Jquery Ajax正常写
ajax跨域操作,ajax跨域必须要前端和服务端指定共同规则,文档有列出操作实例。
html通过 ajax jsonp跨域请求接收和传送数据 使用HTML页面与后台跨域交互,获得后台数据或传输数据给后台