2016-08-16 4 views
2

Я пытаюсь обновить div, когда форма отправлена, но кажется, что я что-то забываю.Grails - Ajax submit не работает?

вот мой 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 & assocante_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); 
     } 
    })  
    }); 
}); 
Смежные вопросы