jQuery的load方法无效

4
以下代码中的 jQuery 加载不起作用。我错过了什么吗?
```html

以下代码中的 jQuery 加载不起作用。我错过了什么吗?

```
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js">  </script>
</head>
<body style="font-size:62.5%;">

<div id="dialog" title="Dialog Title">I'm in a dialog</div>
<script>
$(document).ready(function() {
        $("#dialog").load('http://www.google.com/intl/en/about/index.html #maia-main');
});
</script>
</body>
</html>

2
由于安全原因,您无法执行跨站点AJAX请求。您必须使用iframe来实现。 - Alessandro Desantis
4个回答

5
您正在请求一个位于不同域的页面,因此跨域策略适用。只有在远程服务器允许的情况下(并且只能使用JSONP,如果我理解有误,请任何人纠正我),您才能跨域访问数据。如果您想获取Google页面的源代码,则需要使用服务器端脚本作为代理来执行jQuery。
$(function() {

    //notice the client-side code (JS) is requesting a page on the save domain
    $("#dialog").load('my-script.php #maia-main');
});

my-script.php 中,你可以获取你想要的远程页面:
<?php

//PHP, like all server-side languages has no cross-domain-policy
echo file_get_contents('http://www.google.com/intl/en/about/index.html');
?>
file_get_contents()的文档:http://www.php.net/file_get_contents

2

尝试将脚本移到服务器上,因为本地环境下jQuery Ajax并不总是起作用。


0

脚本执行

当使用没有后缀选择器表达式的URL调用.load()时,内容会在脚本被删除之前传递给.html()。这会在它们被丢弃之前执行脚本块。然而,如果在URL后附加了选择器表达式调用.load(),则在更新DOM之前会剥离脚本,因此不会执行。下面可以看到两种情况的示例:

在这里,作为文档一部分加载到#a中的任何JavaScript都将成功执行。

$('#a').load('article.html');

然而,在下面的情况中,加载到#b的文档中的脚本块被剥离并且不会被执行:

$('#b').load('article.html #target');

来源:jQuery.com


0

在“.load()”中加载外部链接

创建一个名为external.php的页面

在external.php中放置以下代码:

<?php
$url = 'http://ur/url/here'; 
echo $var = get_file_contents($url); ?>

现在用jQuery加载这个页面,它将加载外部链接。

$('div').load('external.php');


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接