2010-06-04 64 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>