Javascript XmlHttpRequest问题

Javascript XmlHttpRequest问题,javascript,xmlhttprequest,Javascript,Xmlhttprequest,我在Mac OS X上创建了一个运行在Apache Web服务器上的html/javascript网站。该网站通过XmlHttpRequest使用带有JSON的.NET Web服务。此Web服务正在Windows Vista计算机上运行 可通过以下url访问该网站:http://macintosh.companyname.local/~username/Sitename/index.html. 当我用这个url在Mac上用Safari打开网站时,我没有从Web服务中得到任何JSON数据 当我打开

我在Mac OS X上创建了一个运行在Apache Web服务器上的html/javascript网站。该网站通过XmlHttpRequest使用带有JSON的.NET Web服务。此Web服务正在Windows Vista计算机上运行

可通过以下url访问该网站:
http://macintosh.companyname.local/~username/Sitename/index.html.
当我用这个url在Mac上用Safari打开网站时,我没有从Web服务中得到任何JSON数据

当我打开带有URL
file://Users/username/Sites/Sitename/index.html
它工作得非常好

我的第一个想法是,它与XmlHttpRequest有关,并且在许多浏览器中都有安全限制,但我不确定当我通过Web服务器而不是html文件的绝对路径调用站点时,它为什么不起作用

下面是我用来调用Web服务的代码:

<div id="eigenRisico" class="panel" title="Eigen Risico">
<h2>Eigen Risico Per Polis</h2>     
    <script type="text/javascript">         
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "http://webserviceurl/GetEigenRisicoVerzekerde", true);        
    xhr.onreadystatechange = function(){

        if (xhr.readyState === 4) { 
            var result = eval('(' +xhr.responseText+')');           
            var ihtml="";
            var j = 0;
            for(i = 0; i < result.d.length/2; i++) {
                ihtml=ihtml+"<fieldset><div class='row'><label>Polisnummer:</label><span>"+result.d[j]+"</span></div>";
                j++;
                ihtml=ihtml+"<div class='row'><label>Resterend Eigen Risico:</label><span>&euro "+result.d[j]+"</span></div></fieldset>";
                j++;
            }               
            document.getElementById('eigenRisico').innerHTML = ihtml;
        }
    };
    xhr.setRequestHeader("content-type", "application/json");
    var postData = '{"bsn": "999999999"}';
    xhr.send(postData);
    </script>               
</div>

每城邦本征里西科酒店
var xhr=new XMLHttpRequest();
xhr.open(“POST”http://webserviceurl/GetEigenRisicoVerzekerde“,对);
xhr.onreadystatechange=函数(){
如果(xhr.readyState==4){
var result=eval('('+xhr.responseText+');
var ihtml=“”;
var j=0;
对于(i=0;i

有人知道为什么会发生这种情况吗?

您不能执行跨域ajax请求

您可以通过在自己的域上设置一个代理页面来解决这个问题,该页面将接收请求并重定向它,然后将输出重定向回您

你在运行PHP吗?还是其他服务器端处理

编辑

为了澄清您最初的问题,在读取文件:///时,安全策略与http://不同。本地资源被认为是可信的,因此允许ajax请求通过。作为一个网址,它看起来只是一个网站在以您的名义做一些不应该做的事情。

您不能做跨域ajax请求

您可以通过在自己的域上设置一个代理页面来解决这个问题,该页面将接收请求并重定向它,然后将输出重定向回您

你在运行PHP吗?还是其他服务器端处理

编辑
为了澄清您最初的问题,在读取文件:///时,安全策略与http://不同。本地资源被认为是可信的,因此允许ajax请求通过。作为一个网址,它只是看起来像一个网站正在做的事情,你的名字,也许它不应该