2012-08-28 27 views
11

ट्विटर बूटस्ट्रैप मोडल मोडल के अंदर बाहरी यूआरएल लोड नहीं करता है।ट्विटर बूटस्ट्रैप मोडल बाहरी यूआरएल काम नहीं कर रहे हैं

नमूना कोड: 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> 

उत्तर

31

यह काम नहीं करता है क्योंकि आप एक ही origin policy restriction है कि आप जो यहाँ क्या बूटस्ट्रैप उपयोग कर रहा है क्रॉस डोमेन AJAX अनुरोध भेजने से रोक दिया उल्लंघन कर रहे हैं। तो एक संभावना एक में बाह्य सामग्री लोड करने के लिए है:

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

चेतावनी दी हो, यद्यपि कुछ साइटें (जैसे गूगल, stackoverflow, के रूप में फेसबुक, ...) एक iframe में लोड नहीं किया जा सकता है। वे X-Frame-Options प्रतिक्रिया HTTP शीर्षलेख SAMEORIGIN पर सेट कर रहे हैं और यह भी जांचें कि क्या उन्हें iframe के अंदर लोड किया गया है या नहीं।

आप इस बेला में कार्रवाई में इसे देख सकते हैं: http://jsfiddle.net/f2Fcd/

+0

उत्तर के लिए धन्यवाद। मैं इस समस्या की जांच करने के लिए बाहरी यूआरएल का उपयोग करता हूं जेएस बेवकूफ है। मैं मॉडल के अंदर लोड करने के लिए अपना आंतरिक एएसपीएनटी एमवीसी दृश्य लोड करना चाहता हूं। यह मेरे लिए काम नहीं करता है। उदाहरण प्रयोजनों मैं का उपयोग करें helloworld.html http://jsfiddle.net/kV8hB/3/ धन्यवाद, नवीन – Naveen

+0

आप अपने आंतरिक ASP.NET MVC दृश्य लोड करने में तो आप एक iframe की जरूरत नहीं करना चाहते हैं । बस सुनिश्चित करें कि यूआरएल सही है। उदाहरण के लिए यदि आप अपने ब्राउज़र पता बार में सीधे 'href' में यूआरएल डालते हैं तो क्या होता है? क्या यह काम कर रहा है? –

+0

आपकी मदद के लिए धन्यवाद। – Naveen

2

आज़माएं:

<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

यह स्निपेट अजाक्स के माध्यम से मोडल विषय-वस्तु आकर्षित में मदद करता है:

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

ध्यान रखें , कि HTML response प्राप्त हुआ, सामान्य रूप से "मोडल-सामग्री" तत्व के अंदर मौजूद डोम-तत्वों का विरोध करना चाहिए:

<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> 
संबंधित मुद्दे