如何将我的服务器端ASP XmlHttpRequest代码转换为客户端JavaScript?
问题描述:
我用下面的ASP代码,XML请求如何将我的服务器端ASP XmlHttpRequest代码转换为客户端JavaScript?
<%
pXML=Server.URLencode(SearchRequest)
set xmlhttp = server.CreateObject("MSXML2.ServerXMLHTTP")
xmlhtt.open "post", http://OutSideDomain/xml_requests , false
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.send "xml_request=" &pXML
htresult = xmlhttp.responsexml.xml
%>
我尝试
<script type="text/javascript">
function loadXMLDoc()
{
var xmlHttp;
try
{
xmlHttp=new XMLHttpRequest(); }
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Your browser does not support AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
alert(xmlHttp.responseText);
}
}
var params ='xml_request=' +'<%=pXML>';
xmlHttp.open("POST","http://OutSideDomain/xml_requests",true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(params);
}
</script>
上面的ASP代码工作正常写在JavaScript(阿贾克斯)上面的代码,并获得XML响应,
但在JavaScript中我得到的错误是“拒绝访问”中的像xmlHttp.send(params);
什么是“Access De的问题尼德“?
我在这里从一个HTTP到另一个HTTP是不可能的......但是,这件事是工作在我的ASP网页..
我该如何解决这个问题?
希望你的回复
答
问题是在上下文的差异。您的JavaScript代码正在运行客户端,因此受到Same Origin Policy的约束。你的ASP代码运行在服务器端,所以它不是。
虽然有initiatives going on,但您现在基本上无法从客户那里做到这一点,这可以使一些有限的跨站点通信成为可能。目前,最好在服务器端继续这样做(尽管会导致带宽成本)。
或者,如果您尝试访问的源提供了JSONP接口,则可以使用该接口。