2008-09-09 63 views

回答

20

如果你使用jQuery它有一个回调函数来解决这个问题:

http://docs.jquery.com/Ajax/jQuery.ajax#options

在jQuery 1.2中,你可以加载JSON位于另一个域名,如果你 指定 数据JSONP回调,可以是 这样做:“myurl?callback =?”。 jQuery自动替换? 用正确的方法名称调用, 调用您指定的回调。或者, 如果您将dataType设置为“jsonp”,则 回调将自动添加 到您的Ajax请求。

或者你可以让你的Ajax请求到服务器端脚本,做跨域找你,然后把数据传回到你的脚本

+0

仅适用于json,如果您需要xml,该怎么办? – 2009-07-31 20:54:46

+0

那么这就是当你必须使用第二个选项在传递xml的服务器端脚本中进行跨域调用时 – 2009-08-03 00:30:22

0

更多的细节将是很好:这AJAX你正在使用的图书馆,你想要达到什么目的,你是如何做到的。

例如,它可以是跨域Ajax请求,这是不允许的。在这种情况下,使用JSON

0

最近我遇到了这个问题,它是当我作为AJAX加载本地请求,而不是跨站点脚本问题。此外,吉米本人似乎也有同样的问题。这似乎是FF安全问题,本文描述了cause and the solution to access to restricted uri denied" code: "1012 problem

对不起,得到了使用JQuery $就这个错误在火狐3.试图JSONP 建议,但我认为这只会 的东西的工作,这将有助于达到 JSON。我试图创建一个样本 基于本地html文件的混搭,将 从雅虎财经拉动数据,但他们 服务.csv,所以我认为我是SOL。 - Jimmy Chandra(9月9日17:20)

我希望你会觉得它有用。

6

要更新答案(我猜,主要是为了我的好处,当我在稍后查找此答案时),如果正在加载XML或其他内容,您可以随时询问用户是否允许我们从另一个网站使用此代码:

try { 
    if (netscape.security.PrivilegeManager.enablePrivilege) 
     netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); 
} catch (e) { 
    alert("Sorry, browser security settings won't let this program run."); 
    return; 
} 

(从RESTful Web服务的书)但是,当HTML文件从本地文件加载在Firefox中,这仅适用。所以,没有那么有用。

1

还有一个解决方案:如果您只需要标题,您可以指定“HEAD”作为方法,并且不会触发安全问题。例如,如果你只是想知道网页是否存在。

var client = new XMLHttpRequest(); 
client.open("HEAD", my_url, false); 
client.send(null); 
if(client.readyState != 4 || client.status != 200) //if we failed 
    alert("can't open web page");