Ajax有条件的跨域访问

翻译|其它|编辑:郝浩|2008-06-13 10:59:42.000|阅读 1234 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

有网友说通过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格式
标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:CSDN

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP