以下代码中的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>
答案 0 :(得分: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
答案 1 :(得分:2)
尝试将脚本移动到服务器,jquery ajax不能始终在本地工作。
答案 2 :(得分:0)
脚本执行
使用不带后缀选择器表达式的URL调用.load()
时,在删除脚本之前,内容将传递到.html()
。这将在丢弃之前执行脚本块。但是,如果使用附加到URL的选择器表达式调用.load()
,则在更新DOM之前会删除脚本,因此不会执行脚本。两种情况的例子如下所示:
此处,作为文档一部分加载到#a
的任何JavaScript都将成功执行。
$('#a').load('article.html');
但是,在以下情况中,加载到#b
的文档中的脚本块将被删除而不会执行:
$('#b').load('article.html #target');
来源:jQuery.com
答案 3 :(得分:0)
在&#34; .load()&#34;
中加载外部链接创建页面说external.php
在external.php中输入以下代码:
<?php
$url = 'http://ur/url/here';
echo $var = get_file_contents($url); ?>
现在在jquery中加载此页面,它将加载外部链接
$(&#39; DIV&#39)。载荷(&#39; external.php&#39);