Обновите / перезагрузите содержимое в Div с помощью jquery / ajax


80

Я хочу перезагрузить div одним нажатием кнопки. Я не хочу перезагружать страницу полностью.

Вот мой код:

HTML:

<div role="button" class="marginTop50 marginBottom">
    <input type="button" id="getCameraSerialNumbers" value="Capture Again" class="disabled" />
    <input type="button" id="confirmNext"  value="Confirm & Proceed" class="disabled marginLeft50" />
</div>

При нажатии <input type="button" id="getCameraSerialNumbers" value="Capture Again">кнопки a <div id="list">....</div>должен перезагрузиться без загрузки или обновления полной страницы.

Ниже приведен JQuery, который я пробовал, но не работал: -

$("#getCameraSerialNumbers").click(function () {
    $("#step1Content").load();
});

Пожалуйста, предложите.

Вот DIV на моей странице, который содержит изображения и серийные номера некоторых продуктов ... Который будет поступать из базы данных в первый раз при загрузке страницы. Но если пользователь сталкивается с какой-то проблемой, он нажимает кнопку «Захватить снова», <input type="button" id="getCameraSerialNumbers" value="Capture Again">которая снова загружает эту информацию.

HTML-код Div: -

<div id="step1Content" role="Step1ShowCameraCaptures" class="marginLeft">

<form>
    <h1>Camera Configuration</h1>
    <!-- Step 1.1 - Image Captures Confirmation-->
    <div id="list">
        <div>
            <p>
                <a id="pickheadImageLightBox" data-lightbox="image-1" title="" href="">
                    <img alt="" id="pickheadImage" src="" width="250" height="200" />
                </a>
            </p>
            <p>
                <strong>Pickhead Camera Serial No:</strong><br />
                <span id="pickheadImageDetails"></span>
            </p>
        </div>
        <div>
            <p>
                <a id="processingStationSideImageLightBox" data-lightbox="image-1" title="" href="">
                    <img alt="" id="processingStationSideImage" src="" width="250" height="200" />
                </a>
            </p>
            <p>
                <strong>Processing Station Top Camera Serial No:</strong><br />
                <span id="processingStationSideImageDetails"></span>
            </p>
        </div>
        <div>
            <p>
                <a id="processingStationTopImageLightBox" data-lightbox="image-1" title="" href="">
                    <img alt="" id="processingStationTopImage" src="" width="250" height="200" />
                </a>
            </p>
            <p>
                <strong>Processing Station Side Camera Serial No:</strong><br />
                <span id="processingStationTopImageDetails"></span>
            </p>
        </div>
        <div>
            <p>
                <a id="cardScanImageLightBox" data-lightbox="image-1" title="" href="">
                    <img alt="" id="cardScanImage" src="" width="250" height="200" />
                </a>
            </p>
            <p>
                <strong>Card Scan Camera Serial No:</strong><br />
                <span id="cardScanImageDetails"></span>
            </p>

        </div>
    </div>
    <div class="clearall"></div>

    <div class="marginTop50">
        <p><input type="radio" name="radio1" id="optionYes" />Yes, the infomation captured is correct.</p>
        <p><input type="radio" name="radio1" id="optionNo" />No, Please capture again.</p>
    </div>
    <div role="button" class="marginTop50 marginBottom">
        <input type="button" id="getCameraSerialNumbers" value="Capture Again" class="disabled" />
        <input type="button" id="confirmNext"  value="Confirm & Proceed" class="disabled marginLeft50" />
    </div>
</form>

Теперь при нажатии <input type="button" id="getCameraSerialNumbers" value="Capture Again" class="disabled" />кнопки информация, которая находится в ней, <div id="list">... </div> должна быть загружена снова.

Пожалуйста, дайте мне знать, если вам понадобится дополнительная информация.


1
Здесь не хватает деталей. Откуда вы пытаетесь получить контент? Какой код у вас есть для этого? Есть ли ошибки? Почему не работает?
Рори МакКроссан

Что именно вы хотите перезагрузить? Вам нужно вызвать базу данных?
Альваро

Что находится внутри # step1Content и каким он должен быть после нажатия кнопки?
jcubic

Вопрос в том, как в первую очередь заполнить содержимое DIV #list?
А. Вольф,

Ответы:


44

Я всегда этим пользуюсь, работает отлично.

$(document).ready(function(){
        $(function(){
        $('#ideal_form').submit(function(e){
                e.preventDefault();
                var form = $(this);
                var post_url = form.attr('action');
                var post_data = form.serialize();
                $('#loader3', form).html('<img src="../../images/ajax-loader.gif" />       Please wait...');
                $.ajax({
                    type: 'POST',
                    url: post_url, 
                    data: post_data,
                    success: function(msg) {
                        $(form).fadeOut(800, function(){
                            form.html(msg).fadeIn().delay(2000);

                        });
                    }
                });
            });
        });
         });

1
Я думаю, вы также можете удалить, delayпоскольку он, согласно документации , задерживает последующие вызовы.
Доменико Де Феличе

Ах да, это просто приятный эффект! ;)
Gucho Ca

$('#loader3', form);содержит форму? могу я это удалить? потому что я использую изменение, а не отправляю.
151291

151291 да, это идентификатор моей формы, измените его по своему усмотрению.
Gucho Ca

1
formзавернутый в jquery, так зачем вы это сделали? $(form).fadeOut(800, function(){
jack blank

123
$("#mydiv").load(location.href + " #mydiv");

Всегда обращайте внимание на пробел непосредственно перед вторым знаком # , иначе приведенный выше код вернет всю страницу, вложенную в предполагаемый DIV. Всегда ставьте место.


9
Это вкладывает #mydiv в #mydiv для каждого загружаемого вызова. Правильная версия предоставлена ​​Хуаном.
Матиас

Это не AJAX, как говорится в вопросах.
Gucho Ca

2
Это не обязательно AJAX, но обеспечивает ожидаемый пользовательский опыт
Дейл Клиффорд,

Можно ли включить параметры в uri? Например: $("#relation-body").load(location.href+" #relation-body?organization_id="+item.id);
Koen B.

1
Это повлияет на вызовы jquery, поскольку он создает динамические элементы в DOM, jquery не работает. Так что используйте onсобытие в jquery вместо прямого доступа к элементу внутри этого div
Тамилхан

64
$("#myDiv").load(location.href+" #myDiv>*","");

10
Пожалуйста, дайте пояснения к вашему ответу, это поможет другим понять, почему вы думаете, что это хороший ответ на вопрос.
m4rtin

21
@ php_coder_3809625 Если честно, Пека ответил через пару месяцев после Хуана :)
Шашанк Шекхар

3
@ Хуан: не могли бы вы объяснить, что именно он делает. спасибо
Gaurav Parek

1
Как мне настроить это, чтобы также перезагрузить всех детей?
Рики Барнетт,

могу ли я использовать класс с идентификатором?
TarangP

18

Когда этот метод выполняется, он извлекает содержимое location.href, но затем jQuery анализирует возвращенный документ, чтобы найти элемент divId. Этот элемент вместе с его содержимым вставляется в элемент с идентификатором результата ( divId), а остальная часть полученного документа отбрасывается.

$ ("# divId"). load (location.href + "#divId> *", "");

надеюсь, это может помочь кому-то понять


7

Вы хотите снова загрузить данные, но не перезагружать div.

Вам нужно сделать запрос Ajax, чтобы получить данные с сервера и заполнить DIV.

http://api.jquery.com/jQuery.ajax/


7

Хотя вы не предоставили достаточно информации, чтобы на самом деле указать, ОТКУДА вы должны получать данные, вам все же нужно получить их откуда-то. Вы можете указать URL-адрес в загрузке, а также определить параметры данных или функцию обратного вызова.

$("#getCameraSerialNumbers").click(function () {
    $("#step1Content").load('YourUrl');
});

http://api.jquery.com/load/


5

Попробуй это

HTML-код

 <div id="refresh">
    <input type="text" />
    <input type="button" id="click" />
 </div>

код jQuery

 <script>
    $('#click').click(function(){
    var div=$('#refresh').html();
    $.ajax({
        url: '/path/to/file.php',
        type: 'POST',
        dataType: 'json',
        data: {param1: 'value1'},
    })
    .done(function(data) {
if(data.success=='ok'){
        $('#refresh').html(div);
}else{
// show errors.
}
    })
    .fail(function() {
        console.log("error");
    })
    .always(function() {
        console.log("complete");
    });
    });

</script>

путь кода страницы php = / путь / к / file.php

<?php
   header('Content-Type: application/json');
   $done=true;
   if($done){
       echo json_encode(['success'=>'ok']);
   }
?>

2

Вам нужно добавить источник, откуда вы загружаете данные.

Например:

$("#step1Content").load("yourpage.html");

Надеюсь, это поможет вам.


1

Я знаю, что тема старая, но вы можете объявить Ajax как переменную, а затем использовать функцию для вызова переменной для желаемого содержимого. Имейте в виду, что вы вызываете то, что у вас есть в Ajax, если вам нужны элементы, отличные от Ajax, которые вам нужно указать.

Пример:

Var infogen = $.ajax({'your query')};

$("#refresh").click(function(){
  infogen;
  console.log("to verify");
});    

Надежда помогает

если не попробуй:

$("#refresh").click(function(){
      loca.tion.reload();
      console.log("to verify");
    });    

0
$(document).ready(function() {
var pageRefresh = 5000; //5 s
    setInterval(function() {
        refresh();
    }, pageRefresh);
});

// Functions

function refresh() {
    $('#div1').load(location.href + " #div1");
    $('#div2').load(location.href + " #div2");
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.