Actualizar / recargar el contenido en Div usando jquery / ajax

80

Quiero recargar un div al hacer clic en un botón. No quiero volver a cargar la página completa.

Aquí está mi código:

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>

Al hacer clic en el <input type="button" id="getCameraSerialNumbers" value="Capture Again">botón, se <div id="list">....</div>debe recargar sin cargar ni actualizar la página completa.

A continuación se muestra el Jquery que probé, pero no funciona: -

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

Por favor recomiende.

Aquí está el DIV en mi página, que contiene imágenes y números de serie de algunos productos ... que vendrán de la base de datos por primera vez en la carga de la página. Pero si el usuario se enfrenta a algún problema, hará clic en el botón "Capturar de nuevo" " <input type="button" id="getCameraSerialNumbers" value="Capture Again">" que cargará esa información nuevamente.

El código HTML de 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>

Ahora, al hacer clic en el <input type="button" id="getCameraSerialNumbers" value="Capture Again" class="disabled" />botón, la información que se encuentra <div id="list">... </div> debe cargarse nuevamente.

Por favor avíseme si necesita más información.

UID
fuente
1
No hay suficientes detalles aquí. ¿De dónde intentas obtener contenido? ¿Qué código tienes para hacer eso? ¿Hay errores? Por que no funciona'?
Rory McCrossan
¿Qué quieres recargar exactamente? ¿Necesitarías llamar a la base de datos?
Álvaro
¿Qué hay dentro de # step1Content y qué desea que sea después de hacer clic en el botón?
jcubic
La pregunta es ¿cómo se completa en primer lugar el contenido de la #list DIV?
A. Wolff

Respuestas:

44

Yo siempre uso esto, funciona perfecto.

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

                        });
                    }
                });
            });
        });
         });
Gucho Ca
fuente
1
Creo que también puede eliminar el delayya que, según la documentación , retrasa las llamadas posteriores .
Domenico De Felice
¡Oh, sí, es solo un efecto agradable! ;)
Gucho Ca
$('#loader3', form);contiene forma? ¿Puedo eliminar esto? porque estoy usando el cambio, no enviarlo.
151291
151291 sí, es el ID de mi formulario, cámbielo según sus necesidades.
Gucho Ca
1
formestá envuelto en jquery, así que ¿por qué lo hiciste? $(form).fadeOut(800, function(){
jack blank
123
$("#mydiv").load(location.href + " #mydiv");

Siempre tome nota del espacio justo antes del segundo signo # ; de lo contrario, el código anterior devolverá la página completa anidada dentro de su DIV deseado. Pon siempre espacio.

Peca
fuente
9
Esto anida un #mydiv en un #mydiv para cada llamada a cargar. Juan proporciona la versión correcta.
Mathias
Esto no es AJAX como dicen las preguntas.
Gucho Ca
2
No es necesariamente AJAX, pero ofrece la experiencia de usuario esperada
Dale Clifford
¿Es posible incluir parámetros en la uri? Por ejemplo: $("#relation-body").load(location.href+" #relation-body?organization_id="+item.id);
Koen B.
1
Esto afectaría las llamadas de jquery ya que crea elementos dinámicos en el DOM, jquery falla. Así que use el onevento en jquery en lugar de acceder directamente al elemento dentro de este div
Thamilhan
64
$("#myDiv").load(location.href+" #myDiv>*","");
Juan Manuel PRONEXO De Castro
fuente
10
Proporcione explicaciones junto con su respuesta, esto ayudará a otros a entender por qué cree que es una buena respuesta a la pregunta.
m4rtin
21
@ php_coder_3809625 Para ser honesto, Peca respondió un par de meses después de Juan :)
Shashank Shekhar
3
@Juan: ¿podría explicar qué hace exactamente? gracias
Gaurav Parek
1
¿Cómo puedo ajustar esto para recargar también a todos los niños?
Ricky Barnett
¿Puedo usar la clase en lugar de la identificación?
TarangP
18

Cuando este método se ejecuta, recupera el contenido de location.href, pero luego jQuery analiza el documento devuelto para encontrar el elemento divId. Este elemento, junto con su contenido, se inserta en el elemento con un ID ( divId) de resultado, y el resto del documento recuperado se descarta.

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

espero que esto pueda ayudar a alguien a entender

Sachin Sudhakar Sonawane
fuente
7

Lo que quieres es volver a cargar los datos pero no volver a cargar el div.

Debe realizar una consulta Ajax para obtener datos del servidor y completar el DIV.

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


fuente
7

Si bien no ha proporcionado suficiente información para indicar realmente DÓNDE debe extraer los datos, debe extraerlos de algún lugar. Puede especificar la URL en carga, así como definir parámetros de datos o una función de devolución de llamada.

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

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

David L
fuente
5

Prueba esto

código HTML

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

código 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>

ruta del código de la página php = / ruta / a / file.php

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

Debe agregar la fuente desde donde está cargando los datos.

Por ejemplo:

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

Espero que te ayude.

Shubham Kumar
fuente
1

Sé que el tema es antiguo, pero puede declarar el Ajax como una variable, luego usar una función para llamar a la variable en el contenido deseado. Tenga en cuenta que está llamando a lo que tiene en el Ajax si desea un elemento diferente del Ajax, debe especificarlo.

Ejemplo:

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

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

La esperanza ayuda

si no prueba:

$("#refresh").click(function(){
      loca.tion.reload();
      console.log("to verify");
    });    
Elneto
fuente
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");
}
gjerich
fuente