2010-10-01 7 views
44

Obecnie mój Modal Dialog jest jak tenjQuery: Wczytaj Modal Dialog Zawartość poprzez Ajax

<html> 
<head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script> 
    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/humanity/jquery-ui.css" type="text/css" /> 
</head> 
<body> 
    <div id="dialog" title="Title Box"> 
    <p>Stuff here</p> 
    </div> 
    <script type="text/javascript"> 
    jQuery(
    function() { 
    jQuery("#dialog") 
     .dialog(
     { 
     bgiframe: true, 
     autoOpen: false, 
     height: 100, 
     modal: true 
     } 
    ); 
    jQuery('body') 
     .bind(
     'click', 
     function(e){ 
     if(
     jQuery('#dialog').dialog('isOpen') 
     && !jQuery(e.target).is('.ui-dialog, a') 
     && !jQuery(e.target).closest('.ui-dialog').length 
     ){ 
     jQuery('#dialog').dialog('close'); 
     } 
     } 
    ); 
    } 
    ); 
    </script> 
    <a href="#" onclick="jQuery('#dialog').dialog('open'); return false">Click to view</a> 
</body> 
</html> 

div, który jest załadowany jest w tę samą stronę. Jak przenieść ten element div na drugą stronę i załadować zawartość za pośrednictwem Ajax po wyświetleniu okna dialogowego? Czy mogę ponownie użyć skryptu do załadowania różnych treści zgodnie z potrzebą?

Odpowiedz

71

Zobacz ten wpis na blogu od Nemikor, który powinien zrobić to, co chcesz.

http://blog.nemikor.com/2009/04/18/loading-a-page-into-a-dialog/

Zasadniczo przed wywołaniem „otwartą”, ty „obciążenie” zawartość z drugiej pierwszej stronie.

jQuery('#dialog').load('path to my page').dialog('open'); 
+16

chociaż działa to otworzy okno od razu, nie czekając na ładunek, aby zakończyć. byłoby lepiej użyć funkcji wywołania zwrotnego, takiej jak: '$ ('# dialog') .load (" ścieżka do mojej strony ", function() {$ (" # dialog "). dialog (" otwórz "); }); ' – billynoah

14

spróbuj użyć tego.

$(document).ready(function(){ 
$.ajax({ 
    url: "yourPageWhereToLoadData.php", 
    success: function(data){ 
     $("#dialog").html(data); 
    } 
}); 

$("#dialog").dialog(
     { 
     bgiframe: true, 
     autoOpen: false, 
     height: 100, 
     modal: true 
     } 
); 
}); 
4
var dialogName = '#dialog_XYZ'; 
$.ajax({ 
     url: "/ajax_pages/my_page.ext", 
     data: {....}, 
     success: function(data) { 
      $(dialogName).remove(); 

      $('BODY').append(data); 

      $(dialogName) 
      .dialog(options.dialogOptions); 
     } 
}); 

Ajax-Request załadować Dialog, dodaj je do Ciała bieżącej strony i otworzyć okno.

Jeśli tylko whant załadować zawartość można zrobić:

var dialogName = '#dialog_XYZ'; 
$.ajax({ 
      url: "/ajax_pages/my_page.ext", 
      data: {....}, 
      success: function(data) { 
       $(dialogName).append(data); 

       $(dialogName) 
       .dialog(options.dialogOptions); 
      } 
}); 
0
<button class="btn" onClick="openDialog('New Type','Sample.html')">Middle</button> 

<script type="text/javascript"> 
    function openDialog(title,url) { 
     $('.opened-dialogs').dialog("close"); 

     $('<div class="opened-dialogs">').html('loading...').dialog({ 
      position: ['center',20], 
      open: function() { 
       $(this).load(url); 

      }, 
      close: function(event, ui) { 
        $(this).remove(); 
      }, 

      title: title, 
      minWidth: 600    
     }); 

     return false; 
    } 
</script> 
0

może być ten kod może dać pewne wyobrażenie.

http://blog.nemikor.com/2009/04/18/loading-a-page-into-a-dialog/

$(document).ready(function() { 
    $('#page-help').each(function() { 
     var $link = $(this); 
     var $dialog = $('<div></div>') 
      .load($link.attr('href')) 
      .dialog({ 
       autoOpen: false, 
       title: $link.attr('title'), 
       width: 500, 
       height: 300 
      }); 

     $link.click(function() { 
      $dialog.dialog('open'); 

      return false; 
     }); 
    }); 
});