2010-06-04 47 views
1

我有这样的代码,应该创建一个对话框,点击该链接时,内页谷歌:jQueryUI的:打开一个链接对话框

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

任何想法?

Javi

回答

2

你不能做跨域的Ajax请求。这意味着你不能从google.com获取html并将其推入到你的对话框中。如果你希望在对话框中显示谷歌,那么你可能会想要使用iframe,或者只是写你自己的HTML看起来像谷歌,当他们击中搜索打开一个新窗口的结果

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>