Abrir nueva ventana al regresar información de AJAX

publicado por: Anonymous

Estoy intentado enviar información por AJAX a un PHP y que cuando regrese la respuesta me abra en otra pestaña un otro PHP que procesará la información regresada.

Tengo este código

function printAdmLetter()
{
    if($("#adm_nomina").val()==""||$("#case_desc").val()==""||$("#boss_actions").val()==""||$('select[name=cause]').val()==null)
    {
        swal("¡Olvidaste algo!", "La información no está completa.", "error");
        return false;
    }

    else
    {
        adm_nomina = document.getElementById("adm_nomina").value;
        auth = document.getElementById("auth").value;
        cause = $('select[name=cause]').val();
        case_desc = document.getElementById("case_desc").value;
        boss_actions = document.getElementById("boss_actions").value;
        $.ajax(
        {

            url:"./phpLibraries/admLetter.php",
            method:"POST",
            data:{adm_nomina:adm_nomina,
                        auth:auth,
                        cause:cause,
                      case_desc:case_desc,
                    boss_actions:boss_actions},
            success:function(data)
            {
                if(data=='X')
                {
                    swal("¡Error!","No se pudo ingresar la información, intentalo nuevamente.","error");
                }

                else
                {
                        window.open('phpLibraries/printAdmLetter.php?id='+data);
                }
            }
     });
    }
}

El problema es que no hace nada, no abre la pestaña.
Hice una prueba con:

window.location.href='phpLibraries/printAdmLetter.php?id='+data;

y de esa manera si funciona.

solución

Es un comportamiento que la mayoría de navegadores adoptan. La instrucción window#open será bloqueada si no es resultado de alguna interacción directa con el usuario (por ejemplo algún evento click). Un código que es ejecutado por un suceso asíncrono, como un callback, no cataloga como interacción directa con el usuario, deteniendo así la ejecución de window#open.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *