как загрузить другую страницу внутри div?

#jquery #html

#jquery #HTML

Вопрос:

Я создал несколько разделов, используя цикл, а затем внутри него есть скрытое поле, значение которого является URL-адресом, который я хочу, чтобы div был загружен. Я пробовал эту load() функцию, но она оказалась медленной. Как и в случае, когда я использовал iframe , загрузка занимает очень много времени, а высота и ширина не увеличиваются из-за дочернего элемента. Есть ли другой способ сделать это?

Обновить

имя файла моего html-кода index.html.erb

 <div id="surveyDiv" style="overflow-y:auto;" >
  <% @sections.each do |sec| %>
  <% #sec = @sections.first %>
    <br/>
    <% @div_id = "survey_section_"   (sec.id).to_s %>
    <div id="<%=h @div_id %>">
        <img src="/images/loading.gif" id="loadingPic"/>
      <input type=hidden id="hid" name="hid" value="<%=h @srcString   "?section="   (sec.id).to_s %>"/>
      <!--<iframe id="the_frame" name="the_frame" src="<%#=h @srcString   "?section="   (sec.id).to_s %>" scrolling="yes" frameborder="no" ></iframe>-->
    </div>
    <script type="text/javascript">
        /*$('div:last').load($('input[type=hidden]:last').val())*/

        $.get($('input[type=hidden]:last').val(), function(data) {
          $('.surveyDiv div:last').html(data);
        });

        $('div:last').ready(function() {
            $('#loadingPic').css('display','none')
        });
    </script>
  <% end %>
</div>
  

Ответ Самича хорош, но потом, когда я его использовал, я не вижу загруженный html .. хе-хе

Комментарии:

1. если возможно? пожалуйста, предоставьте более подробную информацию с кодом.

Ответ №1:

Самич прав, get подходит для вашей задачи. И об изменении размера divs: я столкнулся с аналогичной проблемой со всплывающим окном на одном из моих сайтов. Размер всплывающего окна изменился в соответствии с загруженным содержимым, но что-то странное произошло в safari и explorer. Если текст был слишком длинным, то всплывающее окно занимало максимальную ширину, что не очень хорошо, я предпочитаю вместо этого переносить слова. Идеальный способ — определить ширину содержимого в содержимом. Например, у вас есть HTML для загрузки в контейнер:

 <div class="d1">some text</div>
  

Чтобы обеспечить согласованность между браузерами, вы должны либо определить ширину .d1 с помощью css, либо определить встроенный стиль для тега div.

Ответ №2:

Я действительно не понимаю… ASP?

но попробуйте это

 <div id="surveyDiv" style="overflow-y:auto;" >
    <% @sections.each do |sec| %>
    <% #sec = @sections.first %>
    <br/>
    <% @div_id = "survey_section_"   (sec.id).to_s %>
    <div id="<%=h @div_id %>">
        <img src="/images/loading.gif" id="loadingPic" />
        <input type="hidden" class="helloimhidden" id="hid<%=h @div_id %>" name="hid" value="<%=h @srcString   "?section="   (sec.id).to_s %>" />
    </div>
    <% end %>
</div>
<script type="text/javascript">
    $('.helloimhidden').each(function() {
        var myInput = $(this);
        $.get(myInput.val(), function(data) {
            myInput.parent().html(data);
        });
    });
</script>
  

пожалуйста, дайте мне знать, как это происходит, я боюсь, что только последний div покажет результаты из-за перезаписи myInput… если да, попробуйте это

 <script type="text/javascript">
    var myI = 0;
    var myInput = [];
    $('.helloimhidden').each(function() {
        myInput[myI] = $(this);
        $.get(myInput[myI].val(), function(data) {
            myInput[myI].parent().html(data);
        });
        myI  ;
    });
</script>
  

Комментарии:

1. извини, чувак, я перестал работать над этим … хехехе, и это не ASP, это Ruby on Rails. В любом случае, спасибо!