Tengo un problema principal al trabajar con éxito ajax cuando intento volver a cargar una página web. En el éxito ajax, tengo tanto location.reload como window.location.hash. Después de este location.reload, necesito activar un evento de clic para abrir un div cerrado.

Pero desafortunadamente, es el evento de clic que se activa primero y la recarga de ubicación ocurre después del éxito de ajax. Abajo está mi código.

$.ajax({
        url: updatedUrl,
        dataType: 'json',
        type: 'post',
        data: 'id=' +  id,
        complete: function() {},
        success: function(data) {
            $('.overlay').hide();
            alert(data.status+': '+data.message);
            location.reload();
            window.location.hash = 'link';
            $('toggle-arrow').trigger('click');
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
});

¿Hay alguna forma de activar el clic después de la recarga de ubicación?

0
kmg 22 feb. 2018 a las 15:25

3 respuestas

La mejor respuesta

Debe agregar hash antes de volver a cargar y verificar la función de hash en carga para link, si coincide, desencadena el evento click,

$(document).ready(function(){
    if(window.location.hash == '#link'){
          $('toggle-arrow').trigger('click');
    }
})


$.ajax({
        url: updatedUrl,
        dataType: 'json',
        type: 'post',
        data: 'id=' +  id,
        complete: function() {},
        success: function(data) {
            $('.overlay').hide();
            alert(data.status+': '+data.message);
            window.location.hash = 'link';
            location.reload();            

        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
});
1
programtreasures 22 feb. 2018 a las 12:31

Intenta usar esto

setTimeout(function(){
$.ajax({
        url: updatedUrl,
        dataType: 'json',
        type: 'post',
        data: 'id=' +  id,
        complete: function() {},
        success: function(data) {
            $('.overlay').hide();
            alert(data.status+': '+data.message);
            location.reload();
            window.location.hash = 'link';
            $('toggle-arrow').trigger('click');
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
});
},500);
0
SHUBHAM KESARWANI 22 feb. 2018 a las 12:32

¿Por qué estás usando location.reload()? si tienes que quedarte en la misma página. en lugar de eso, simplemente puede abrir el div en la misma página en su éxito ajax:

$.ajax({
        url: updatedUrl,
        dataType: 'json',
        type: 'post',
        data: 'id=' +  id,
        complete: function() {},
        success: function(data) {
            $('.overlay').hide();
            alert(data.status+': '+data.message);
            $('#YOUR_DIV_ID").show();
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
});
1
prakash tank 22 feb. 2018 a las 12:31