使用JQuery进行跨域请求


Posted in Javascript onJanuary 25, 2010
以上程序是今天偶然看到的,分享一下!
原文地址:  Cross-domain-request-with-jquery
当然,还有以上的那个 Demo,我直接拿过来改了下,原地址:Demo

$(document).ready(function(){ 
var container = $('#target'); 
container.attr('tabIndex','-1'); 
$('.ajaxtrigger').click(function(){ 
var trigger = $(this); 
var url = trigger.attr('href'); 
if(!trigger.hasClass('loaded')){ 
trigger.append('<span></span>'); 
trigger.addClass('loaded'); 
var msg = trigger.find('span::last'); 
} else { 
var msg = trigger.find('span::last'); 
} 
doAjax(url,msg,container); 
return false; 
}); function doAjax(url,msg,container){ 
// if the URL starts with http 
if(url.match('^http')){ 
// assemble the YQL call 
msg.removeClass('error'); 
msg.html(' (loading...)'); 
$.getJSON("http://query.yahooapis.com/v1/public/yql?"+ 
"q=select%20*%20from%20html%20where%20url%3D%22"+ 
encodeURIComponent(url)+ 
"%22&format=xml'&callback=?", 
function(data){ 
if(data.results[0]){ 
var data = filterData(data.results[0]); 
msg.html(' (ready.)'); 
container. 
html(data). 
focus(). 
effect("highlight",{},1000); 
} else { 
msg.html(' (error!)'); 
msg.addClass('error'); 
var errormsg = '<p>Error: could not load the page.</p>'; 
container. 
html(errormsg). 
focus(). 
effect('highlight',{color:'#c00'},1000); 
} 
} 
); 
} else { 
$.ajax({ 
url: url, 
timeout:5000, 
success: function(data){ 
msg.html(' (ready.)'); 
container. 
html(data). 
focus(). 
effect("highlight",{},1000); 
}, 
error: function(req,error){ 
msg.html(' (error!)'); 
msg.addClass('error'); 
if(error === 'error'){error = req.statusText;} 
var errormsg = 'There was a communication error: '+error; 
container. 
html(errormsg). 
focus(). 
effect('highlight',{color:'#c00'},1000); 
}, 
beforeSend: function(data){ 
msg.removeClass('error'); 
msg.html(' (loading...)'); 
} 
}); 
} 
} 
function filterData(data){ 
// filter all the nasties out 
// no body tags 
data = data.replace(/<?\/body[^>]*>/g,''); 
// no linebreaks 
data = data.replace(/[\r|\n]+/g,''); 
// no comments 
data = data.replace(/<--[\S\s]*?-->/g,''); 
// no noscript blocks 
data = data.replace(/<noscript[^>]*>[\S\s]*?<\/noscript>/g,''); 
// no script blocks 
data = data.replace(/<script[^>]*>[\S\s]*?<\/script>/g,''); 
// no self closing scripts 
data = data.replace(/<script.*\/>/,''); 
// [... add as needed ...] 
return data; 
} 
});
Javascript 相关文章推荐
JavaScript 的方法重载效果
Aug 07 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
Apr 16 Javascript
多引号嵌套的变量命名的问题
May 09 Javascript
sails框架的学习指南
Dec 22 Javascript
浅谈javascript 函数内部属性
Jan 21 Javascript
javascript获取重复次数最多的字符
Jul 08 Javascript
JavaScript性能优化之小知识总结
Nov 20 Javascript
vue通过watch对input做字数限定的方法
Jul 13 Javascript
在Js页面通过POST传递参数跳转到新页面详解
Aug 25 Javascript
使用D3.js+Vue实现一个简单的柱形图
Aug 05 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
Aug 16 Javascript
详解Vue3中对VDOM的改进
Apr 23 Javascript
javascript 的Document属性和方法集合
Jan 25 #Javascript
起点页面传值js,有空研究学习下
Jan 25 #Javascript
js 巧妙去除数组中的重复项
Jan 25 #Javascript
将函数的实际参数转换成数组的方法
Jan 25 #Javascript
javascript中利用数组实现的循环队列代码
Jan 24 #Javascript
document.getElementById为空或不是对象的解决方法
Jan 24 #Javascript
JavaScript 未结束的字符串常量常见解决方法
Jan 24 #Javascript
You might like
php fckeditor 调用的函数
2009/06/21 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
php生成curl命令行的方法
2015/12/14 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
js表数据排序 sort table data
2009/02/18 Javascript
常用简易JavaScript函数
2009/04/09 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
基于jquery的cookie的用法
2011/01/10 Javascript
js 采用delete实现继承示例代码
2014/05/20 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
使用python Django做网页
2013/11/04 Python
Python实现的tab文件操作类分享
2014/11/20 Python
Python 多进程并发操作中进程池Pool的实例
2017/11/01 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
Pandas之排序函数sort_values()的实现
2019/07/09 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
Python使用Tkinter实现滚动抽奖器效果
2020/01/06 Python
Python3开发环境搭建详细教程
2020/06/18 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
《尊严》教学反思
2014/02/11 职场文书
学校对教师的评语
2014/04/28 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL