2010-07-08 41 views
1

我想使用jQuery加载函数加载一些外部内容到我的页面上div。加载方法和本地内容一起工作正常,但是如果您想从域中获得某些内容,则该方法无效。 (它实际上在IE中有安全警告,但拒绝在Chrome中工作)。 jQuery文档说它是正确的,因为跨域内容因安全原因受到限制。如果使用.getJSON方法,我会得到同样的警告。来自客户端脚本的跨域内容使用(安全问题)

OK,之后谷歌上搜索了一下,我发现使用YQL加载的内容非常有趣的方法,我已经尝试了一些例子,像这样:

 var request = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Ffinance.yahoo.com%2Fq%3Fs%3Dyhoo%22&format=json&diagnostics=true&callback=?"; 
     $.getJSON(request, function (json) { 
      alert(json); 
     } 
     ); 

它真的有效!

我现在不明白的是,http://query.yahooapis.com也是跨域资源,但浏览器(包括IE和Chrome)都能正常工作吗?

有什么区别?我错过了什么?

谢谢

回答

0

谢谢您的回答,但不幸的是他们两个不回答我的原始问题。

我已经签出re在stackoverflow(我知道我需要做的第一)有关问题,并找到了这种行为的原因。

第一个代码snipset使用AJAX/JSON来检索数据,并且由于同源策略而被允许。但是,对YQL的请求使用JSONP来代替,这没关系。

JSONP是我不知道的东西,这就是为什么我没有失去理智和行为。上JSONP

介绍的信息可以在这里找到: http://ajaxian.com/archives/jsonp-json-with-padding

0

你可以在外部网站JSON是这样的:

callback({key:value,etc:1}) 

,并定义

function callback(json) { 
    ..here is processing.. 
} 
+0

不太回答我的问题.. – 2010-07-09 07:40:43