【发布时间】:2009-06-04 04:43:44
【问题描述】:
我在使用 jQuery AJAX 调用时遇到了一些问题。当我请求一个没有 javascript 的页面时,我的代码工作正常,但是当我的代码中有脚本标签时,事情开始变得奇怪。
似乎任何引用外部 URL 的脚本标签都会导致浏览器重定向。在 Firefox 中,页面变为空白。在 safari 中,页面会清除并加载 AJAX 响应的内容。在两种浏览器中,URL 都不会改变。
具体说明我的问题;我有一个选项卡控件,我试图在其中嵌入 walkscore 小部件。由于它在客户端非常繁重,我只想在用户单击它所在的选项卡后实际加载它。walkscore AJAX 页面如下所示:
<script type="text/javascript">
var ws_address = "1 Market St, San Francisco";
var ws_width = "500";
</script>
<script type="text/javascript" src="http://www.walkscore.com/tile/show-tile.php?wsid=MY_WSID">
</script>
在 AJAX 调用中引用外部站点的脚本标签是否有一些限制?有什么好的办法吗?
-- 编辑--
好的,我已经玩了一段时间,并且稍微缩小了问题的范围。让我试着同时给出一个更好的解释:
我有两个文件,index.html 和 walkscore.html
index.html
function widget() {
var widget = $('#walkscore');
$.get('/walkscore.html', function(data) {
$('#loading').slideUp(function() {
widget.html(data);
loaded[name] = true;
widget.slideDown();
});
});
}
walkscore.html - 如顶部代码块所示
在 index.html 中,我有一个调用小部件函数的链接。每当我单击此链接时,整个页面都会被 js 文件的输出替换。无论 js 文件来自哪个域,它都会发生。它似乎只发生在其中包含 document.write 的 js 文件中。当我使用 $.getScript 函数时,它的行为方式完全相同,即使它位于 index.html 中
-- 编辑--
它似乎与document.write有关。我制作了 walkscore javascript 的副本,并用 jquery.html 替换了所有出现的 document.write,它似乎工作正常。我(显然)是一个 js 菜鸟。这是 document.write 的预期行为吗?为什么我在页面加载中包含脚本时它不这样做?
【问题讨论】:
标签: javascript jquery ajax