2010-10-01 17 views
44

Actuellement, mon Modal Dialog est comme çajQuery: Boîte de dialogue Load Modal contenu via 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> 

La division qui est chargée est inclus dans la même page. Comment puis-je déplacer ce div à une deuxième page et charger le contenu via Ajax lorsque la boîte de dialogue est affichée? Puis-je réutiliser le script pour charger différents contenus selon les besoins?

Répondre

71

Découvrez ce blog de Nemikor, qui devrait faire ce que vous voulez.

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

En fait, avant d'appeler 'ouvert', vous 'charge' le contenu de l'autre première page.

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

bien que cela fonctionne, il ouvre la boîte de dialogue immédiatement plutôt que d'attendre la charge pour terminer. serait mieux d'utiliser une fonction de rappel comme: '$ ('# dialog'). load ('chemin-vers-ma-page', function() {$ ('# dialog'). dialog ('open'); }); ' – billynoah

14

Essayez d'utiliser celui-ci.

$(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); 
     } 
}); 

L'Ajax-demande charger la boîte de dialogue, les ajouter à l'ensemble de la page en cours et ouvrir la boîte de dialogue.

Si vous ne whant pour charger le contenu que vous pouvez faire:

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

peut-être ce code peut vous donner une idée.

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; 
     }); 
    }); 
});