活到老学到老学习活到老学到老学习AJAX跨域(三)跨域(三)
学习AJAX其实有个很重要的应用,就是为了执行另外几个站点的ASP,返回结果。通过本文给大家介绍ajax跨
域相关知识,需要的朋友参考下
学习AJAX其实有个很重要的应用,就是为了执行另外几个站点的ASP,返回结果。
真正用起来,发现2个问题,一向做DELPHI,接触ASP不多的我,的确问题大堆。
第一个问题:
VBS的变量传递给JS。。。通过学习发现很简单的。。。
先看下我大体实现方法:
<%
dim sSrv1Link
sSrv1Link = "http://www.XXX.org/test1.asp?U=TESTUSER&M=111&E=222"
%>
<script type="text/javascript">
function synSvrData(str)
{
var xmlhttp;
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
//创建对象
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//处理ONREADYSTATECHANGE事件,我们这里只相应服务器反馈成功的
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",str,true);
xmlhttp.send();
}
</script>
上面这段代码的意思就是用AJAX实现访问一个ASP,并返回结果。
<script type="text/javascript">
var jsSvr='<%=sSrv1Link%>';
synSvrData(jsSvr)
</script>
看到没?这个才是关键:
var jsSvr='<%=sSrv1Link%>';
js使用VBS变量,为什么要这样?因为加密串那些都是VBS生成的。
本地测试OK,现在把访问文件换成其他服务器上的。。。
sSrv1Link = "http://www.XXX2.org/test1.asp?U=TESTUSER&M=111&E=222"
意思就是跨域!!!
这时候问题来了。。。代码执行后无返回,后来发现不是不返回,是XXX2服务器不响应!
发现问题出现在 test1.asp 这个文件上!!!对!你没看错!
跨域请求,顾名思义,就是一个站点中的资源去访问另外一个不同域名站点上的资源。