有网友说通过Iframe等一系列操作能实现Ajax的跨域操作,可惜我都没测试成功,可能我太笨了,先敲下自己。前不久帮人搞sina的股票实时图,我去查看了sina的源代码,顺便扣了下来,经自己的改造成了如下形式:
view plaincopy to clipboardprint?
if(document.getElementById('MyScript')){
document.body.removeChild(document.getElementById('MyScript'));
}
var element = document.createElement("script");
element.id='MyScript';
element.type = "text/javascript";
element.charset = "gb2312";
if(typeid==0){
element.src = "http://hq.sinajs.cn/rn=" + (new Date()).getTime() + "&list=s_sh000001";
}else if(typeid==1){
element.src = "http://hq.sinajs.cn/rn=" + (new Date()).getTime() + "&list=s_sz399001";
}
element[document.all ? "onreadystatechange" : "onload"] = function () {
if (document.all && this.readyState != "loaded" && this.readyState != "complete") {
return;
}
var Stock;
if (window["hq_str_s_sh000001"] && typeid==0){
Stock=window["hq_str_s_sh000001"].split(',');
}else if(window["hq_str_s_sz399001"] && typeid!=0){
Stock=window["hq_str_s_sz399001"].split(',');
}
if(Stock.length>0){
CurStock.sum_name=Stock[0];
CurStock.sum_curNum=Stock[1];
CurStock.sum_chanRate=Stock[3];
}
CurStock.picurl=getImage(typeid);
WriteStock();
}
document.body.appendChild(element);
if(document.getElementById('MyScript')){
document.body.removeChild(document.getElementById('MyScript'));
}
var element = document.createElement("script");
element.id='MyScript';
element.type = "text/javascript";
element.charset = "gb2312";
if(typeid==0){
element.src = "http://hq.sinajs.cn/rn=" + (new Date()).getTime() + "&list=s_sh000001";
}else if(typeid==1){
element.src = "http://hq.sinajs.cn/rn=" + (new Date()).getTime() + "&list=s_sz399001";
}
element[document.all ? "onreadystatechange" : "onload"] = function () {
if (document.all && this.readyState != "loaded" && this.readyState != "complete") {
return;
}
var Stock;
if (window["hq_str_s_sh000001"] && typeid==0){
Stock=window["hq_str_s_sh000001"].split(',');
}else if(window["hq_str_s_sz399001"] && typeid!=0){
Stock=window["hq_str_s_sz399001"].split(',');
}
if(Stock.length>0){
CurStock.sum_name=Stock[0];
CurStock.sum_curNum=Stock[1];
CurStock.sum_chanRate=Stock[3];
}
CurStock.picurl=getImage(typeid);
WriteStock();
}
document.body.appendChild(element);
这样子实际上是跨域去访问了sina的http://hq.sinajs.cn/,我们再看看http://hq.sinajs.cn/ 页面
view plaincopy to clipboardprint?
var hq_str_s_sh000001="上证指数,2961.588,-62.652,-2.07,454324,5217669";
var hq_str_s_sh000001="上证指数,2961.588,-62.652,-2.07,454324,5217669";
就是一段javascript代码,当然是动态生成的。
既然这样,我们在Ajax中也应该可以这么去做,从而达到跨域访问;条件是访问页面必须是javascript格式
Ajax有条件的跨域访问
来源:CSDN
作者:jinkun Shen
时间:2008-06-13 点击:262 次
相关文章:
文章搜索
推荐文章
推荐产品
|
VARCHART XGantt
全球知名的甘特图控件,能够实现如 Microsoft Project 般强大的项目管理功能。
|
|
TurboDemo 中文版
TurboDemo - 抓取屏幕截图并通过动态演示示例及手册解释软件、个人电脑应用程序、网站与产品。
|
|
BCGControlBar Library .NET Edition
该组件包含大量可自定义程度高、可设计性好的组件,使用户可创建精致美观的图形用户界面。
|
|
WebUI Studio.NET
WebUI Studio.NET 是一套用于开发专业 ASP.NET web 应用程序必不可少的控件。
|





