有网友说通过Iframe等一系列操作能实现Ajax的跨域操作,可惜我都没测试成功,可能我太笨了,先敲下自己。
前不久帮人搞sina的股票实时图,我去查看了sina的源代码,顺便扣了下来,经自己的改造成了如下形式:
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/ 页面
var hq_str_s_sh000001="上证指数,2961.588,-62.652,-2.07,454324,5217669";
就是一段javascript代码,当然是动态生成的。
既然这样,我们在Ajax中也应该可以这么去做,从而达到跨域访问;条件是访问页面必须是javascript格式