隐藏参数URL(jQuery和Grails)

时间:2017-08-15 11:39:55

标签: jquery grails

  

我想要做的是当用户完成表格时   “Titulacion”查看并按下该视图的“Nuevo”按钮,重定向   我自己到“Portada”视图而不显示参数   URL,如下图所示。

click image URL

  

代码工作正常。

档案“Titulación.gsp”

<!DOCTYPE html>
<html>

<head>
    <meta name="layout" content="layoutPlantilla">
    <title>Titulación</title>

    <!-- Enlaza los estilos de los ficheros '.css' -->
    <asset:stylesheet src="estilosGeneracionGuiasDocentes/estilosCabeceras.css"/>
    <asset:stylesheet src="estilosGeneracionGuiasDocentes/validaciones.css"/>

    <!-- Enlaza el codigo de ficheros jQuery -->
    <asset:javascript src="javascriptGeneracionGuiasDocentes/jQuerySelectores.js"/>
    <asset:javascript src="javascriptGeneracionGuiasDocentes/jQueryBotones.js"/>
    <asset:javascript src="javascriptGeneracionGuiasDocentes/jQueryMensajes.js"/>
    <asset:javascript src="javascriptGeneracionGuiasDocentes/jQueryAjax.js"/>

    <script>
        var enlaceObjetos = {
            urlTitulacion: "${createLink(controller:"Titulacion", action:"selectTitulacion")}",
            urlAsignatura: "${createLink(controller:"Titulacion", action:"selectAsignatura")}",
            urlValidaGuia: "${createLink(controller:"GuiaDocente", action:"validaGuiaDocente")}",
            urlBusquedaGuia: "${createLink(controller:"MenuGuiasDocentes", action:"index")}"
        }
    </script>
</head>

<body>
    <g:if test="${session.getAttribute("e-mail")}">

        <form id="idFormTitulacion">
            <div class="container-fluid text-center">
                <div class="row content">

                    <div class="col-sm-12 text-left">
                        <h1>Titulación</h1>
                        <hr>

                        <!-- Titulacion -->
                        <div class="form-group">
                            <label for="titulacion">Titulación</label>

                            <!-- Muestra mensaje de error si no se selecciona en el select 'titulacion' -->
                            <label class="error errorTitulacion" for="titulacion"></label>

                            <select id="titulacion" name="titulacion" class="form-control titulacion select">
                                    <option value="" hidden>Seleccione opción...</option>
                                    <option value="vacio"></option>
                                <g:each in="${consultaTitulacion}" var="indice">
                                    <option>${indice}</option>
                                </g:each>
                            </select>
                        </div>

                        <!-- Asignatura en espanol-->
                        <div class="form-group">
                            <label for="asignatura">Asignatura</label>

                            <!-- Muestra mensaje de error si no se selecciona en el select 'asignatura' -->
                            <label class="error errorAsignatura" for="asignatura"></label>

                            <select id="asignatura" name="asignatura" class="form-control titulacion select">
                                    <option value="" hidden>Seleccione opción...</option>
                                    <option value="vacio"></option>
                                <g:each in="${consultaAsignatura}" var="indice">
                                    <option>${indice}</option>
                                </g:each>
                            </select>
                        </div>

                        <!-- curso academico -->
                        <div class="form-group">
                            <label for="cursoAcademico">Curso académico</label>

                            <!-- Muestra mensaje de error si no se selecciona en el select 'cursoAcademico' -->
                            <label class="error errorCursoAcademico" for="cursoAcademico"></label>

                            <select id="cursoAcademico" name="cursoAcademico" class="form-control select">
                                <option value="" hidden>Seleccione opción...</option>
                                <option value="vacio"></option>
                                <option value="2016/17">2016/17</option>
                                <option value="2017/18">2017/18</option>
                                <option value="2018/19">2018/19</option>
                            </select>
                        </div>

                        <!-- Modalidad -->
                        <div class="form-group">
                            <label for="modalidad">Modalidad</label>

                            <!-- Muestra mensaje de error si no se selecciona en el select 'modalidad' -->
                            <label class="error errorModalidad" for="modalidad"></label>

                            <select id="modalidad" name="modalidad" class="form-control select">
                                <option value="" hidden>Seleccione opción...</option>
                                <option value="vacio"></option>
                                <option value="Presencial">Presencial</option>
                                <option value="Semipresencial">Semipresencial</option>
                                <option value="A distancia">A distancia</option>
                             </select>
                        </div>

                    </div>
                </div>

                <button id="botonNuevo" type="button" class="btn btn-primary">Nuevo</button>
                <button id="botonBuscar" type="button" class="btn btn-primary">Buscar</button>

            </div>

        </form>
    </g:if>
</body>

</html>

档案“Portada.gsp”

<!DOCTYPE html>
<html>

<head>
    <title>Portada</title>
    <meta name="layout" content="layoutPlantilla" />

    <!-- Enlaza los estilos de los fichero '.css' -->
    <asset:stylesheet src="estilosGeneracionGuiasDocentes/estilosCabeceras.css"/>
    <asset:stylesheet src="estilosGeneracionGuiasDocentes/validaciones.css"/>
    <asset:stylesheet src="estilosGeneracionGuiasDocentes/estilosToast.css"/>

    <!-- Enlaza el codigo de los ficheros jQuery -->
    <asset:javascript src="javascriptGeneracionGuiasDocentes/jQuerySelectores.js"/>
    <asset:javascript src="javascriptGeneracionGuiasDocentes/jQueryBotones.js"/>
    <asset:javascript src="javascriptGeneracionGuiasDocentes/jQueryMensajes.js"/>
    <asset:javascript src="javascriptGeneracionGuiasDocentes/jQueryTextos.js"/>
    <asset:javascript src="javascriptGeneracionGuiasDocentes/jQueryAjax.js"/>
    <asset:javascript src="javascriptGeneracionGuiasDocentes/jQueryToast.js"/>
    <asset:javascript src="javascriptGeneracionGuiasDocentes/jQueryPaginacion.js"/>

    <script>
        var enlaceObjetos = ({
            urlTitulacion: "${createLink(controller:"Titulacion", action:"selectTitulacion")}",
            urlAsignatura: "${createLink(controller:"Titulacion", action:"selectAsignatura")}",
            urlIdAsignatura: "${createLink(controller:"GuiaDocente", action:"idAsignatura")}",
            urlValidaGuia: "${createLink(controller:"GuiaDocente", action:"validaGuiaDocente")}",
            urlActualizacionPortada: "${createLink(controller:"GuiaDocente", action:"actualizacionPortada")}",
            urlInsercionPortada: "${createLink(controller:"GuiaDocente", action:"insercionPortada")}",
            urlIdGuiaDocente: "${createLink(controller:"GuiaDocente", action:"idGuiaDocente")}",
            urlObtencionMateria: "${createLink(controller:"GuiaDocente", action:"obtencionMateria")}",
            urlInsercionAsignatura: "${createLink(controller:"GuiaDocente", action:"insercionMateria")}"
        });

        //se muestran y se ocultan los 'div'
        $(function() {
            if (window.location.hash === "#insercion") {
                $("#btnInsercion2").show();
                $("#btnInsercion1").hide();
            }
        });

        $(function() {
            if (window.location.hash === "#modificacion") {
                $("#btnModificacion").show();
                $("#btnInsercion1").hide();
            }
        });

        $(function() {
            if (window.location.hash === "#reutilizacion") {
                $("#btnReutilizacion1").show();
                $("#btnInsercion1").hide();
                $( "#titulacion" ).prop( "disabled", true );
                $( "#asignatura" ).prop( "disabled", true );
            }
        });

        $(function() {
            if (window.location.hash === "#reutilizado") {
                $("#btnReutilizacion2").show();
                $("#btnInsercion1").hide();
                $( "#titulacion" ).prop( "disabled", true );
                $( "#asignatura" ).prop( "disabled", true );
            }
        });

    </script>
</head>

<body>
    <g:if test="${session.getAttribute("e-mail")}">

        <form id="idFormPortada">
            <div class="container-fluid text-center">
                <div class="row content">

                    <div class="col-sm-12 text-left">
                        <h1>Portada</h1>
                        <hr>

                        <!-- Titulacion -->
                        <div class="form-group">
                            <label for="titulacion">Titulacion</label>
                            <select id="titulacion" name="titulacion" class="form-control portada select">
                                    <option value="" hidden>${titulacion}</option>
                                <g:each in="${consultaTitulacion}" var="indice">
                                    <option>${indice}</option>
                                </g:each>
                            </select>
                        </div>

                        <!-- Asignatura en espanol-->
                        <div class="form-group">
                            <label for="asignatura">Asignatura en español</label>
                            <select id="asignatura" name="asignatura" class="form-control portada select">
                                    <option value="" hidden>${asignatura_esp}</option>
                                <g:each in="${consultaAsignatura}" var="indice">
                                    <option>${indice}</option>
                                </g:each>
                            </select>
                        </div>

                        <!-- Asignatura en ingles -->
                        <div class="form-group">
                            <label for="asignatura_ing">Asignatura en inglés</label>
                            <input id="asignatura_ing" name="asignatura_ing" class="form-control" value="${asignatura_ing}" type="text">
                        </div>

                        <!-- Curso academico -->
                        <div class="form-group">
                            <label for="cursoAcademico">Curso academico</label>
                            <select id="cursoAcademico" name="cursoAcademico" class="form-control select">
                                <option value="" hidden>${cursoAcademico}</option>
                                <option>2016/17</option>
                                <option>2017/18</option>
                                <option>2018/19</option>
                            </select>
                        </div>

                        <!-- Modalidad -->
                        <div class="form-group">
                            <label for="modalidad">Modalidad</label>
                            <select id="modalidad" name="modalidad" class="form-control select">
                                <option value="" hidden>${modalidad}</option>
                                <option>Presencial</option>
                                <option>Semipresencial</option>
                                <option>A distancia</option>
                            </select>
                        </div>

                    </div>
                </div>

                <!-- boton insercion 'guardar' deshabilitado -->
                <div id="btnInsercion1">
                    <!-- boton indice -->
                    <button type="button" class="btn btn-primary botonIndice">Indice</button>

                    <!-- boton guardar -->
                    <button type="button" class="btn btn-primary botonInsertar" disabled>Guardar</button>

                    <!-- paginacion -->
                    <nav aria-label="...">
                        <ul class="pagination">
                            <li class="page-item disabled">
                                <a class="page-link" tabindex="-1">Anterior</a>
                            </li>

                            <!-- pagina actual -->
                            <li class="page-item active">
                                <a href="#">1</a>
                            </li>

                            <li class="page-item"><a href="#" class="opcAsignatura">2</a></li>
                            <li class="page-item"><a href="${createLink(action: "descripcionAsignatura")}">3</a></li>
                            <li class="page-item"><a href="${createLink(action: "requisitosPrevios")}">4</a></li>
                            <li class="page-item"><a href="${createLink(action: "objetivos")}">5</a></li>

                            <li class="page-item">
                                <a href="#" class="opcAsignatura">Siguiente</a>
                            </li>
                        </ul>
                    </nav>
                </div>

                <!-- boton insercion 'guardar' habilitado -->
                <div id="btnInsercion2" hidden>
                    <!-- boton indice -->
                    <button type="button" class="btn btn-primary botonIndice" disabled>Indice</button>

                    <!-- boton guardar -->
                    <button type="button" class="btn btn-primary botonInsertar">Guardar</button>

                    <!-- paginacion -->
                    <nav aria-label="...">
                        <ul class="pagination">
                            <li class="page-item disabled">
                                <a class="page-link" tabindex="-1">Anterior</a>
                            </li>

                            <!-- pagina actual -->
                            <li class="page-item active disabled">
                                <a>1</a>
                            </li>

                            <li class="page-item disabled"><a>2</a></li>
                            <li class="page-item disabled"><a>3</a></li>
                            <li class="page-item disabled"><a>4</a></li>
                            <li class="page-item disabled"><a>5</a></li>

                            <li class="page-item disabled">
                                <a>Siguiente</a>
                            </li>
                        </ul>
                    </nav>
                </div>

                <!-- boton modificacion 'guardar' habilitado -->
                <div id="btnModificacion" hidden>
                    <!-- boton indice -->
                    <button type="button" class="btn btn-primary botonIndice">Indice</button>

                    <!-- boton guardar -->
                    <button type="button" class="btn btn-primary botonModificar">Guardar</button>

                    <!-- paginacion -->
                    <nav aria-label="...">
                        <ul class="pagination">
                            <li class="page-item disabled">
                                <a class="page-link" tabindex="-1">Anterior</a>
                            </li>

                            <!-- pagina actual -->
                            <li class="page-item active">
                                <a href="#">1</a>
                            </li>

                            <li class="page-item"><a href="#" class="opcAsignatura">2</a></li>
                            <li class="page-item"><a href="${createLink(action: "descripcionAsignatura")}">3</a></li>
                            <li class="page-item"><a href="${createLink(action: "requisitosPrevios")}">4</a></li>
                            <li class="page-item"><a href="${createLink(action: "objetivos")}">5</a></li>

                            <li class="page-item">
                                <a href="#" class="opcAsignatura">Siguiente</a>
                            </li>
                        </ul>
                    </nav>
                </div>

                <!-- boton reutilizacion 'guardar' con 'indice' y 'paginacion' deshabilitado -->
                <div id="btnReutilizacion1" hidden>
                    <!-- boton indice -->
                    <button type="button" class="btn btn-primary botonIndice" disabled>Indice</button>

                    <!-- boton guardar -->
                    <button type="button" class="btn btn-primary botonReusar">Guardar</button>

                    <!-- paginacion -->
                    <nav aria-label="...">
                        <ul class="pagination">
                            <li class="page-item disabled">
                                <a class="page-link" tabindex="-1">Anterior</a>
                            </li>

                            <!-- pagina actual -->
                            <li class="page-item active disabled">
                                <a>1</a>
                            </li>

                            <li class="page-item disabled"><a>2</a></li>
                            <li class="page-item disabled"><a>3</a></li>
                            <li class="page-item disabled"><a>4</a></li>
                            <li class="page-item disabled"><a>5</a></li>

                            <li class="page-item disabled">
                                <a>Siguiente</a>
                            </li>
                        </ul>
                    </nav>
                </div>

                <!-- boton reutilizacion 'guardar' con 'indice' y 'paginacion' deshabilitado -->
                <div id="btnReutilizacion2" hidden>
                    <!-- boton indice -->
                    <button type="button" class="btn btn-primary botonIndice">Indice</button>

                    <!-- boton guardar -->
                    <button type="button" class="btn btn-primary botonReusar">Guardar</button>

                    <!-- paginacion -->
                    <nav aria-label="...">
                        <ul class="pagination">
                            <li class="page-item disabled">
                                <a class="page-link" tabindex="-1">Anterior</a>
                            </li>

                            <!-- pagina actual -->
                            <li class="page-item active">
                                <a href="#">1</a>
                            </li>

                            <li class="page-item"><a href="#" class="opcAsignatura">2</a></li>
                            <li class="page-item"><a href="${createLink(action: "descripcionAsignatura")}">3</a></li>
                            <li class="page-item"><a href="${createLink(action: "requisitosPrevios")}">4</a></li>
                            <li class="page-item"><a href="${createLink(action: "objetivos")}">5</a></li>

                            <li class="page-item">
                                <a href="#" class="opcAsignatura">Siguiente</a>
                            </li>
                        </ul>
                    </nav>
                </div>

            </div>

        </form>
    </g:if>

    </body>
</html>

“Titulacion”视图中的 “Nuevo”按钮

//--- boton nuevo ---
    $("#botonNuevo").click(function () {

        //Borra todos los errores mostrados en pantalla
        $("label.error").text("");

        if(compruebaSeleccioneOpcion() === true && compruebaSeleccionBlanco() === true){

            URL = enlaceObjetos.urlValidaGuia;
            validaGuia = $("#idFormTitulacion").serialize();

            //peticion ajax para validar la guia docente
            peticionConDatosCallBackAjax(URL, validaGuia, function (data){

                if(data.toString() === ""){

                    //si no existe la guia docente, se accede al formulario
                    datos = $("#idFormTitulacion").serialize();
                    window.location.href = '/GuiaDocente/index?' + datos + "#insercion";
                }else{

                    mensaje = " La guía docente seleccionada ya existe.";
                    showDialogo(mensaje);
                }
            });
        }else{
            //muestra los errores en los selects al pulsar el boton 'nuevo'
            showErrorNuevo();
        }
    });

控制器:“GuiaDocente

class GuiaDocenteController {

        SelectService selectService

        //--- portada ---
        def index(){
            def usuarioLogueado = session.getAttribute("e-mail")
            def titulacion = params.titulacion
            def asignatura_esp = params.asignatura
            def asignatura_ing = params.asignatura_ing
            def cursoAcademico = params.cursoAcademico
            def modalidad = params.modalidad

            //consulta de base de datos para obtener la 'Titulacion' y la 'Asignatura'
           def consultaTitulacion = selectService.consultaTitulacion(usuarioLogueado)
            def consultaAsignatura = selectService.consultaAsignaturaParams(usuarioLogueado,titulacion)

            [consultaTitulacion:consultaTitulacion, consultaAsignatura:consultaAsignatura, titulacion:titulacion,
                     asignatura_esp:asignatura_esp, asignatura_ing:asignatura_ing, cursoAcademico:cursoAcademico,
                     modalidad:modalidad]
 }
}
  

** **注意:**控制器“GuiaDocente”捕获“Titulacion”视图中“Nuevo”按钮的参数

1 个答案:

答案 0 :(得分:0)

实际上有很多方法可以做:

方法1。您只需在表单中添加method="POST"(更好地使用<g:form>)元素,例如<g:form id="idFormTitulacion" method="POST" controller="GuiaDocente" action="index">,并在您的js代码中使用jquery $('#idFormTitulacion').submit();

方法2。 您拥有window.location.href = '/GuiaDocente/index?' + datos + "#insercion";的代码,编写类似下面的代码以使用jQuery提交Ajax请求,然后在控制器端执行您想要的任何逻辑。

var parameters = {'key':'value'}
jQuery.ajax({
      type:'POST',
      data: parameters,
      url:'/GuiaDocente/index',
      success:function (data, textStatus) {
         //do something if you want
      },
      error:function (XMLHttpRequest, textStatus, errorThrown) {
          alert("Error!")
      }
});