2012-08-28 27 views
11

Twitter bootstrap modal, model içindeki harici URL'leri yüklemiyor.Twitter bootstrap modal harici URL'ler çalışmıyor

Örnek Kod: jsFiddle

<a data-toggle="modal" class="btn" href="http://stackoverflow.com" data-target="#myModal">click me</a> 
<div class="modal hide fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
    <div class="modal-header"> 
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> 
    <h3 id="myModalLabel">Modal header</h3> 
    </div> 
    <div class="modal-body"> 
    </div> 
</div> 

cevap

31

Burada kullanarak hangi önyükleme olan alanları arası AJAX istekleri göndermek engeller aynı origin policy restriction ihlal Bunun nedeni çalışmaz. Yani bir ihtimal bir içine harici içerik yüklemek için geçerli:

$('a.btn').on('click', function(e) { 
    e.preventDefault(); 
    var url = $(this).attr('href'); 
    $('.modal-body').html('<iframe width="100%" height="100%" frameborder="0" scrolling="no" allowtransparency="true" src="' + url + '"></iframe>'); 
});​ 

bazı siteler (örneğin google, stackoverflow gibi facebook, ...) bir iframe yüklenen edilemez olsa uyardı. SAMEORIGIN'a X-Frame-Options yanıt HTTP üstbilgisini ayarlıyorlar ve ayrıca bir iframe içine yüklenip yüklenmediklerini de kontrol ediyorlar. Bu keman eylem görebiliyorum

: Deneyin http://jsfiddle.net/f2Fcd/

+0

Cevabınız için teşekkür ederiz. Bu soruyu kontrol etmek için harici url kullanıyorum js fiddle. İç modele yüklemek için dahili asp.net mvc görünümünü yüklemek istiyorum. Bu benim için çalışmıyor. Örnek amaçlar için kullanıyorum helloworld.html http://jsfiddle.net/kV8hB/3/ Teşekkür ederim, Naveen – Naveen

+0

Dahili ASP.NET MVC görünümünüzü yüklemek istiyorsanız, iframe gerekmez. . Sadece URL'nin doğru olduğundan emin ol. Örneğin, tarayıcınızın adres çubuğuna doğrudan href'de bulunan url'yi koyarsanız ne olur? Çalışıyormu? –

+0

Yardımlarınız için teşekkür ederiz. – Naveen

2

bu: akılda

$.get(href, function(response) { 
    $("#myModal .modal-content").html(response); 
}); 

tutun: Bu pasajı Ajax yoluyla modal içerik getirirken yardımcı olur

<script type="text/javascript" charset="utf-8"> 
$(function() { 
$('*[data-modal]').click(function(e) { 
e.preventDefault(); 
var href = $(e.target).attr('href'); 
    if (href.indexOf('#') == 0) { 
    $(href).modal('show'); 
    } else { 
    $.get(href, function(data) { 
    $('<div class="modal">' + data + '</div>').modal('show').appendTo('body'); 
         }); 
        } 
       }); 
      }); 
     </script> 
0

HTML response öğesinin getirildiği, "modal içerik" öğesinin içinde normal olarak bulunan dom öğelerini içermelidir:

<div class="modal-header">HEADER</div> 
<div class="modal-body">BODY</div> 
<div class="modal-footer"> 
    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
    <button type="button" class="btn btn-primary">Do It</button> 
</div>