Passar parametros via ajax

21 respostas
java
D

de todas as informações que já li aqui nenhuma funciona no meu caso provavelmente esteja fazendo caquinhas aki mas preciso de ajuda,

nesse mesmo formulario preciso recuperar 3 campos e passar para essa url abaixo, cmo posso fazer isso

function abreDetalhes() {

	$.ajax({
		url : "/RelatorioNC/pesquisaSos",
		type : "POST",
		data: $("#formulario").serialize(),
		success : function(result) {
			if (result.isValid) {
				$("#div1").html(result); //Receber tabela carregada na PesquisaPedidos				
				$("#dialog").dialog("open"); //Abre caixa de dialogo Jquery
			} else {
				$("#dialogErro").dialog("open"); //Abre caixa de dialogo Jquery
			}
		}
	});

}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
	this.doPost(request, response);

}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		try {

			objPesquisa = new BeanPesquisaSos();
			objPesquisa.setsSetor(request.getParameter("setor"));
			objPesquisa.setsDataInicial(request.getParameter("dtaInicio"));
			objPesquisa.setsDataFinal(request.getParameter("dtaFim"));
			objPesquisa.setsSetor(request.getParameter("pesquisa"));

21 Respostas

N

Caso seu Controller estiver aguardando os dados do formulário, será necessário incluir esta linha “data: $(”#form_relatorio").serialize(),". Supondo que o nome do formulário seja “form_relatorio”, segue o exemplo abaixo:

$.ajax({
    url : '/RelatorioNC/pesquisaSos?acao=result',
    type:'POST',
    data: $("#form_relatorio").serialize(),
    success : function(result)
    {        
        $("#div1").html(result); //Receber tabela carregada na PesquisaPedidos                
            $("#dialog").dialog("open"); //Abre caixa de dialogo Jquery
        }
    }
});
D
<form action="/RelatorioNC/pesquisaSos" method="post" id="pesquisa" name="pesquisa">

eu ja tinha tentado isso

function abreDetalhes() {

	$.ajax({
		url : "/RelatorioNC/pesquisaSos?acao=result",
		type : "POST",
		data: $("#pesquisa").serialize,
		success : function(result) {
			if (result.isValid) {
				$("#div1").html(result); //Receber tabela carregada na PesquisaPedidos				
				$("#dialog").dialog("open"); //Abre caixa de dialogo Jquery
			} else {
				$("#dialogErro").dialog("open"); //Abre caixa de dialogo Jquery
			}
		}
	});

}

mas no meu servlet continuo recebendo null
no request.getParametrs eu continho usando o mesmo name do formulario?

N

Por gentileza, envia os campos no formulário “HTML” e o pedaço da
Servlet que recebe a requisição.

D
String acao = request.getParameter("acao");


	if ("result".contains(acao)) {

		try {

			objPesquisa = new BeanPesquisaSos();
			objPesquisa.setsSetor(request.getParameter("setor"));
			objPesquisa.setsDataInicial(request.getParameter("dtaInicio"));
			objPesquisa.setsDataFinal(request.getParameter("dtaFim"));
			objPesquisa.setsSetor(request.getParameter("pesquisa"));

			TipoPesquisa tipoPesquisa = TipoPesquisa.getTipoPesquisa(objPesquisa.getsSetor());

			listaSos = relatorioCliente.listaCompletaSos(objPesquisa,tipoPesquisa);
			
			request.setAttribute("listaSos", listaSos);
D
<form action="/RelatorioNC/pesquisaSos" method="post" id="pesquisa" name="pesquisa"> 
			
				<table width="700" height="132" align="center">
					<td width="12" height="82" align="left">&nbsp;</td>
					<td width="248">Setor:
						<div class="styled-select">
							<div class="campo">
								<select style="width: 200px" name="cmbSetor" size="1">
									<option>Selecione...</option>
									<option value=1>------------- TODOS SETORES ----------</option>
									<c:forEach var="setores" items="${listaSetores}">
										<option value="${setores.sSetores}">${setores.sSetores} - ${setores.sNome}</option>
									</c:forEach>
								</select>
							</div>
						</div>
					</td>
					<td height="82" align="right">&nbsp;</td>
					<td>Data Inicio:
						<div class="campo">
							<input type="date" id="dtaIni" name="dtaInicio" size="25">
						</div>
					</td>
					<td align="right">&nbsp;</td>
					<td>Data Final:
						<div class="campo">
							<input type="date" id="dtaFim" name="dtaFim">
						</div>
					</td>
					<td> <a href="javascript:abreDetalhes()"><img src="imagens/pesquisa.png" width="40" height="40"></a> </td>
				</table>
			</form>
N

O Campo “acao”, não está entre as tags “form”, na Servlet você está utilizando o método “POST” ou “GET” ?

D

na servlet estou usando método POST
String acao = request.getParameter(“acao”); esse que vc está falando?

N

“acao” é um campo do formulário ? se for, ele não está entre as tags “form”

D

esse campo acao estou passando na URL

url : “/RelatorioNC/pesquisaSos?acao=result”,

N

Inclui este campo como Hidden ou muda sua lógica para GET.

D

como faço para incluir como Hidden?
mais os métodos GET está dessa forma, varia alguma diferença?

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
	this.doPost(request, response);

}
N
"Douglas_Dias:
is os métodos GET está dessa forma, varia alguma diferença?
<form action="/RelatorioNC/pesquisaSos" method="post" id="pesquisa" name="pesquisa"> 
<input type='hidden'  id='acao' name='acao' value='result' />

Ou no Ajax você altera para GET.

Fique atento como você envia os seus dados, ou através de POST ou GET.

D

retirei deixei dessa forma url : “/RelatorioNC/pesquisaSos”,
não preciso do result ppor agora
mas mesmo dessa forma os request.getParametrs estão null

N

Você incluiu

<form action="/RelatorioNC/pesquisaSos" method="post" id="pesquisa" name="pesquisa"> 
<input type='hidden'  id='acao' name='acao' value='result' />

No Ajax

data: $("#formulario").serialize()
D

Alterei do jeito que informou edita a pergunta
nenhum dado retornou

N

Como você está enviado os dados para o formulário ?

Coloque um alerta no seu formulário para verificar o que está retornando.

D

vou explicar: eu tenho um formulário que contém três campos
um select
e dois input
eu não estou conseguindo é mandar essas informações para o servlet atraves do ajax
o retorno está certo, mas não está retornando nada por que não consigo fazer o select no campos por que os campos do formularios estão vindo null

eu faço o retorno dessa forma:
listaSos = relatorioCliente.listaCompletaSos(objPesquisa,tipoPesquisa);

request.setAttribute("listaSos", listaSos);

			html = new StringBuilder();
			
			html.append("<table id=\"t01\" width=\"750\" align=\"center\">").append("\r\n");
			html.append("<tr align=\"center\" bgcolor=\"#F58634\">").append("\r\n");
			html.append("<th>SOLIC</th>").append("\r\n");
			html.append("<th>SETOR</th>").append("\r\n");
			html.append("<th>ROTINA</th>").append("\r\n");
			html.append("<th>DATA_DE_ABERTURA</th>").append("\r\n");
			html.append("<th>HORA_DE_ABERTURA</th>").append("\r\n");
			html.append("<th>PRAZO_DATA_ORIGINAL</th>").append("\r\n");
			html.append("<th>PRAZO_HORA_ORIGINAL</th>").append("\r\n");
			html.append("<th>DATA_DE_ENCERRAMENTO</th>").append("\r\n");
			html.append("<th>HORA_DE_ENCERRAMENTO</th>").append("\r\n");
			html.append("<th>RESPONSAVEL</th>").append("\r\n");
			html.append("</tr>").append("\r\n");
			
			for (RelatorioPesquisaSos itensSOS : listaSos) {
				
				html.append("<tr>").append("\r\n");
				html.append("<td align=\"left\">" + itensSOS.getsSolic()             +"</td>").append("\r\n");
				html.append("<td align=\"left\">" + itensSOS.getsSetor()             +"</td>").append("\r\n");
				html.append("<td align=\"left\">" + itensSOS.getsRotina()            +"</td>").append("\r\n");
				html.append("<td align=\"left\">" + itensSOS.getsDataAbertura()      +"</td>").append("\r\n");
				html.append("<td align=\"left\">" + itensSOS.getsHoraAbertura()      +"</td>").append("\r\n");
				html.append("<td align=\"left\">" + itensSOS.getsPrazoDataOriginal() +"</td>").append("\r\n");
				html.append("<td align=\"left\">" + itensSOS.getsPrazoHoraOriginal() +"</td>").append("\r\n");
				html.append("<td align=\"left\">" + itensSOS.getsDataEncerramento()  +"</td>").append("\r\n");
				html.append("<td align=\"left\">" + itensSOS.getsHoraEncerramento()  +"</td>").append("\r\n");
				html.append("<td align=\"left\">" + itensSOS.getsResponsavel()       +"</td>").append("\r\n");
				html.append("</tr>").append("\r\n");	
				
			}
			
			html.append("</table>").append("\r\n");
			response.setContentType("text/html");

			response.getWriter().write(html.toString());

			return;
eu até fiz uma validação no ajax para tratar o retorno:

if (result.isValid) {

$("#div1").html(result); //Receber tabela carregada na PesquisaPedidos				

$("#dialog").dialog(open); //Abre caixa de dialogo Jquery

} else {

$("#dialogErro").dialog(open); //Abre caixa de dialogo Jquery

}
N

Quais são os campos que estão chegando no Servlet ?
Confere campo a campo e garanta que estão entre as tags “form”

D

todos eles estão dentro do form
nenhum dos campos estão chegando
eu li que como estou passando via ajax deveria passar os parametros via ajax também isso procede

N

Douglas,
Faz o seguinte teste.

Monta um formulário simples, com apenas um campo e uma Servlet recebendo este campo, confere se os nomes batem.

Na Servlet retorne uma String simples sem acesso a base de dados, apenas para testar este fluxo, ok ?

D

Só para registrar aqui conseguir resolver dessa forma mesmo:

function abreDetalhes() {
	$.ajax({
		
		url : "/RelatorioNC/pesquisaSos",
		data: $("#pesquisa").serialize(),
		success : function(result) {
			if (result.isValid) {
				$("#div1").html(result); //Receber tabela carregada na PesquisaPedidos				
				$("#dialog").dialog("open"); //Abre caixa de dialogo Jquery
			} else {
				$("#dialogErro").dialog("open"); //Abre caixa de dialogo Jquery
			}
		}
	
	});
}

deu uma varrida nos nomes e estavam incorretos, obrigado pela força ai

Criado 2 de fevereiro de 2016
Ultima resposta 3 de fev. de 2016
Respostas 21
Participantes 2