Javascript XmlHttpRequest问题
我在Mac OS X上创建了一个运行在Apache Web服务器上的html/javascript网站。该网站通过XmlHttpRequest使用带有JSON的.NET Web服务。此Web服务正在Windows Vista计算机上运行 可通过以下url访问该网站: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数据 当我打开
http://macintosh.companyname.local/~username/Sitename/index.html.
当我用这个url在Mac上用Safari打开网站时,我没有从Web服务中得到任何JSON数据
当我打开带有URLfile://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请求通过。作为一个网址,它只是看起来像一个网站正在做的事情,你的名字,也许它不应该