我有这个代码,当点击链接时,应该在里面创建一个与谷歌页面对话的对话框:
<?php use_javascript('/sfJqueryReloadedPlugin/js/jquery-1.3.2.min.js') ?>
<?php use_javascript('/sfJqueryReloadedPlugin/js/plugins/jquery-ui-1.7.2.custom.min') ?>
<?php use_stylesheet('/sfJqueryReloadedPlugin/css/ui-lightness/jquery-ui-1.7.2.custom.css') ?>
<script type="text/javascript">
$(function (){
$('a.ajax').click(function() {
var url = this.href;
var dialog = $('<div style="display:hidden"></div>').appendTo('body');
// load remote content
dialog.load(
url,
{},
function (responseText, textStatus, XMLHttpRequest) {
dialog.dialog();
}
);
//prevent the browser to follow the link
return false;
});
});
</script>
<a class="ajax" href="http://www.google.com">
Open a dialog
</a>
问题:它显示对话框但谷歌不在里面。
我没有遇到任何问题:
<script type="text/javascript">
$(function() {
$("#dialog").dialog();
});
</script>
<div id="dialog" title="Basic dialog">
<p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>
</div>
有什么想法吗?
哈维
答案 0 :(得分:2)
您无法进行跨域ajax请求。这意味着您无法从google.com获取html并将其推送到您的对话框中。如果您想在对话框中显示谷歌,那么您可能想要使用iframe,或者只是编写自己的html看起来像谷歌,当他们点击搜索时打开一个带有结果的新窗口
答案 1 :(得分:0)
出于安全原因,您无法向最初为网页提供服务的域以外的域发出AJAX请求。有关安全风险的示例,请参阅http://en.wikipedia.org/wiki/Same_origin_policy
相反,您应该考虑使用隐藏的iframe,其中加载了Google页面,然后在单击按钮时会显示在正确的位置。
例如:
<iframe src="http://www.google.com/" style="display:none">
<p>Your browser does not support iframes.</p>
</iframe>