2016-08-16 59 views
2

我想更新一个div当表单submited,但似乎我忘记了一些东西。Grails - Ajax提交不起作用?

,这里是我的html:

<%@ page contentType="text/html;charset=UTF-8" %> 
<html> 
    <head> 
     <meta name="layout" content="main" />   
     <g:javascript library="jquery"/> 
    </head> 
    <body> 
     <form id="formEntrada"> 
      <label>Evento: </label> 
      <g:select from="${listaEvento}" name="evento_id" optionValue="nome" optionKey="id" noSelection="${['':'Selecione...']}" required="true"/><br><br>       
      <label>Participante: </label> 
      <input type="text" id="codigo" onkeyup="pesquisa(event,'/eventoEntrada/pesquisar')" value="${participante?.id}" size="15px"/>&nbsp&nbsp 
      <input type="text" value="${participante?.nome}" size="50px" disabled required="true">    
      <input type="submit" value="Adicionar">    
     </form> 
     <div id="divList"> 
      <g:render template="list"/> 
     </div> 
    </body> 
</html> 

,这里是我的JavaScript

$(document).ready(function() { 
    $('#formEntrada').submit(function() {   
     alert("evento_id+participante_id"); 
     var evento_id = document.getElementById("evento_id").value; 
     var participante_id = document.getElementById("participante_id").value;   
     $.ajax({ 
      type: 'POST', 
      url: '/eventoEntrada/entrada', 
      data: {"evento_id": evento_id, "participante_id": participante_id}, 
      dataType: 'text',   
      success: function (data) { 
       $("#divLista").html(data); 
      } 
     })  
    });  
}); 

,这是方法:

def entrada(){   
    EventoEntrada entrada = new EventoEntrada()   
    entrada.setEvento(Evento.get(params.evento_id)) 
    entrada.setParticipante(Pessoa.get(params.participante_id)) 

    println params.evento_id 
    println params.participante_id 

    entrada.hora_entrada = java.sql.Time.valueOf(new SimpleDateFormat("HH:mm:ss").format(new Date())) 
    entrada.saida_antecipada = false 
    if (!entrada.validate()) { 
     entrada.errors.allErrors.each { 
      println it 
     } 
    }else{ 
     entrada.save(flush:true) 
     def listaParticipante = EventoEntrada.list() 
     render (template:"list", model:[listaParticipante:listaParticipante]) 
    } 
} 

当我提交表单我得到的URL” .. ./.../eventoEntrada/index?evento_id=X & participaante_id = Y“ 我为什么失踪?

谢谢!

+0

不是传递,因为这'{的 “evento_id”:evento_id, “participante_id”:participante_id}'在阿贾克斯数据使用'$( '#formEntrada')序列化()'。 – CNKR

回答

0

我想你的Ajax网址是问题。你可以尝试给控制器名称和操作,而不是给路径。

$(document).ready(function() { 
$('#formEntrada').submit(function() {    
    var evento_id = document.getElementById("evento_id").value; 
    var participante_id = document.getElementById("participante_id").value;   
    $.ajax({ 
     type: 'POST', 
     url: "${createLink(controller: 'controllerName', action: 'entrada')}", 
     data: {"evento_id": evento_id, "participante_id": participante_id}, 
     dataType: 'text',   
     success: function (data) { 
      $("#divLista").html(data); 
     } 
    })  
    }); 
});