创建一个小部件,通过ajax检索和显示数据

时间:2010-08-16 19:02:40

标签: ajax widget

我尝试了经典的ajax方法,但在尝试添加存储在另一个域上的脚本时会抛出访问被拒绝的javascript异常。 现在,我确信这是可能的,因为谷歌只通过js填充谷歌广告; twitter也是如此,列表可以继续。

到目前为止我是如何想到的:

<div id="divId"></div>
<script type="text/javascript" src="http://mysite.com/script.js"></script>

script.js中的脚本应该已经更改了上面div的innerHTML属性。相反,我在fireBug中收到以下消息:访问受限制的URI拒绝代码:1012

我google了一下,但只找到了无用的解决方法,比如php代理等,而我希望将这个小部件复制粘贴到其他人的网站,博客,论坛等中。

提前感谢任何有用的回复。 :)

2 个答案:

答案 0 :(得分:1)

出于安全原因,您所看到的行为是有意的。您不希望第三方脚本对您的页面进行任何更改,因为这可能会被大量利用。

相反,请为您的用户提供嵌入其网页的JavaScript代码段。

<script>
    // do stuff here
</script>

请注意,在此代码段中,您可以动态创建脚本代码,设置src属性并加载实际的JavaScript。您的用户在其页面上嵌入的此代码段可以访问整个DOM,但外部加载的脚本不会。

以下是Twitter发布用于嵌入网页的配置文件小部件的示例:

<!-- external js, can't access or change the DOM -->
<script src="http://widgets.twimg.com/j/2/widget.js"></script>
<!-- local js, does that -->
<script>
new TWTR.Widget({
  version: 2,
  ..
  ..
}).render().setUser('hulu').start();
</script>

第一个脚本标记加载库,而实际操作页面的第二个脚本标记直接添加为代码。

答案 1 :(得分:0)

我终于找到了一个不涉及ajax的解决方案。 我只是使用

<div id="objectId"></div>
<script type="text/javascript" src="http://mysite.com/getAndDisplayData.php"></script>
<script type="text/javascript">getAndDisplayData();</script>

在getAndDisplayData.php中,我生成了一个JS脚本,它将在上面的div中创建我的小部件。 php文件还连接到数据库并检索所有必需的窗口小部件数据。 显然这是谷歌广告的工作方式,但我不确定。可以肯定的是,他们不使用ajax。