2010-02-21 77 views
1

我用下面的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网页..

我该如何解决这个问题?

希望你的回复

回答

3

问题是在上下文的差异。您的JavaScript代码正在运行客户端,因此受到Same Origin Policy的约束。你的ASP代码运行在服务器端,所以它不是。

虽然有initiatives going on,但您现在基本上无法从客户那里做到这一点,这可以使一些有限的跨站点通信成为可能。目前,最好在服务器端继续这样做(尽管会导致带宽成本)。

或者,如果您尝试访问的源提供了JSONP接口,则可以使用该接口。

相关问题