如何将服务器端ASP XmlHttpRequest代码转换为客户端JavaScript?

时间:2010-02-21 14:40:04

标签: javascript asp-classic xmlhttprequest

我使用下面的asp代码来获取xml请求

<%
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    
%>

我尝试在javascript(Ajax)中编写上面的代码

<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代码工作正常,得到xml响应,

但是在javascript中我得到的错误是“访问被拒绝”,如xmlHttp.send(params);

“拒绝访问”有什么问题?,

我在这里从一个HTTP到另一个HTTP是不可能的......但那个东西在我的asp页面中工作..

我如何解决这个问题?

希望你的回复

1 个答案:

答案 0 :(得分:3)

问题在于背景的差异。您的JavaScript代码在客户端运行,因此它受Same Origin Policy的约束。您的ASP代码在服务器端运行,因此不是。

您现在基本上无法从客户端执行此操作,但有initiatives going on可能会进行一些有限的跨站点通信。目前,您最好继续在服务器端执行此操作(尽管会导致带宽成本)。

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