JqueryUI:打开对话框的链接

时间:2010-06-04 13:07:50

标签: jquery-ui

我有这个代码,当点击链接时,应该在里面创建一个与谷歌页面对话的对话框:

<?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>

有什么想法吗?

哈维

2 个答案:

答案 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>